Blender快捷键笔记
Blender 3.4 中文参考手册 — Blender Manual
1. 3D视图操作——调整用户视角
3D视图包含:
- 导航器
- XY工作平面,默认Z轴向上
- 游标,默认位于世界中心点
1.1 【3D视图的旋转、缩放和平移】
- 旋转,鼠标中键拖动
- 缩放,鼠标滚轮
- 平移,shift+鼠标中键
1.2 【四视图】
- 透视图
- 顶视图,7——数字键盘的7键才有效,或者点击导航器的Z轴
- 正视图,1——或者点击导航器的—Y
- 右视图,3——或者点击导航器的X
- 四格视图,Ctrl+Alt+Q
旋转视角(鼠标中键拖动),可以从顶视图等,切换回透视图
2. 物体的移动
- 选中一个物体
- 选中移动工具
- 移动:沿坐标轴移动、在坐标平面移动、自由移动(不好控制)
2.1 【移动物体】
- 侧边栏——n面板,N键展开/折叠,显示当前物体的坐标参数
- 坐标归零,Alt+G——G代表Grap
- 旋转归零,Alt+R——R代表Rotate
- 缩放还原,Alt+S——S代表Scale
注意,先选中物体,再按ALT + R
ScaleZ=45度时,表示物体绕着Z轴旋转45度
物体的尺寸,是指边界框的尺寸
2.2 【删除物体】
- 鼠标右键,删除
Delete,直接删除x确认后删除
双击修改,物体的名字
2.3 微调面板
左下角的微调面板可以对用户上一步操作进行微调,可以指定更精确的值
2.4 【grab抓取移动】
选中一个物体,按g,进入Grab状态,此时可以随意移动:
- 再按x,锁定x轴移动
- 再按y,锁定y轴移动
- 再按z,锁定z轴移动
2.5 【复制物体】
- Ctrl+C/Ctrl+V,原位复制
- shift+D,复制物体,并进入grab模式
3. 游标和原点
游标:默认位置是(0,0,0),代表一个坐标,用于物体的的定位——新添加物体的出生点
游标的目视定位:点击一个物体(不要点到虚空) ,shift+鼠标右键
3.1 【精确定位游标-吸附定位】
- 编辑模式
- 点模式
- 选择一个点,网格-吸附-游标到选中项
3.2 【改变原点】
原点,物体的基准点,物体移动、旋转、缩放所围绕的点,默认在物体的几何中心
- 编辑模式,点模式
- 选择一个点,把游标吸附过来(见上)
- 回到物体模式,右键点这个物体,再点设置原点、原点->3D游标
3.3 游标还原、原点还原
游标还原到世界中心(0,0,0)
鼠标右键-> 吸附
原点还原到几何中心
鼠标右键-> 设置原点
4. 练习——Blender导出gltf模型,并用three查看
- 添加平面,缩放到
30*20 - 游标的定位——更改几何体的出生点
- shift+D,复制物体,按平面移动
- 顶视图——几何体的按比例缩放
- 前视图——将几何体放置在平面上
4.1 Blender导出gltf/glb模型
4.2 Three 导入gltf/glb模型
导入时,注意调整相机位置
import * as THREE from 'three'
// 导入轨道控制器
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'
// 1、创建场景
const scene = new THREE.Scene()
scene.background = new THREE.Color(0x0000ff) // 设置场景背景颜色
// 2、创建相机
const camera = new THREE.PerspectiveCamera(
75,
window.innerWidth / window.innerHeight,
0.1,
1000
)
// 设置相机位置,实现全景观看
// camera.position.set(0, 0, 10)
camera.position.set(20, 20, 20)
scene.add(camera)
// 添加物体
// 创建几何体
const cubeGeometry = new THREE.BoxGeometry(2, 2, 2)
const cubeMaterial = new THREE.MeshBasicMaterial({ color: 0xffff00 })
// 根据几何体和材质创建物体
const cube = new THREE.Mesh(cubeGeometry, cubeMaterial)
cube.position.set(0, 10, 0)
// 将几何体添加到场景中
scene.add(cube)
// console.log(cube)
const loader = new GLTFLoader()
loader.load('./test.glb', function (gltf) {
console.log(gltf)
// 遍历场景的物体
gltf.scene.traverse((child) => {
if (child.isMesh) {
// child.material.color = new THREE.Color(
// Math.random(),
// Math.random(),
// Math.random()
// )
child.material.emissive = child.material.color
//emissive: 材质的放射(光)颜色,基本上是不受其他光照影响的固有颜色。默认为黑色
}
})
scene.add(gltf.scene)
})
// 初始化渲染器
const renderer = new THREE.WebGLRenderer()
// 设置渲染的尺寸大小
renderer.setSize(window.innerWidth, window.innerHeight)
// console.log(renderer);
// 将webgl渲染的canvas内容添加到body
document.body.appendChild(renderer.domElement)
// 添加坐标轴辅助器
const axesHelper = new THREE.AxesHelper(20)
scene.add(axesHelper)
// 创建轨道控制器
const controls = new OrbitControls(camera, renderer.domElement)
function render() {
renderer.render(scene, camera)
requestAnimationFrame(render)
}
render()