Blender3.4.1入门1

1,028 阅读3分钟

Blender快捷键笔记

Blender 3.4 中文参考手册 — Blender Manual

1. 3D视图操作——调整用户视角

3D视图包含:

  • 导航器
  • XY工作平面,默认Z轴向上
  • 游标,默认位于世界中心点

image.png

1.1 【3D视图的旋转、缩放和平移】

  • 旋转,鼠标中键拖动
  • 缩放,鼠标滚轮
  • 平移,shift+鼠标中键

image.png

1.gif

1.2 【四视图】

  • 透视图
  • 顶视图,7——数字键盘的7键才有效,或者点击导航器的Z轴
  • 正视图,1——或者点击导航器的—Y
  • 右视图,3——或者点击导航器的X
  • 四格视图,Ctrl+Alt+Q

旋转视角(鼠标中键拖动),可以从顶视图等,切换回透视图

image.png

image.png

2. 物体的移动

  • 选中一个物体
  • 选中移动工具
  • 移动:沿坐标轴移动、在坐标平面移动、自由移动(不好控制)

image.png

2.1 【移动物体】

  • 侧边栏——n面板,N键展开/折叠,显示当前物体的坐标参数
  • 坐标归零,Alt+G——G代表Grap
  • 旋转归零,Alt+R——R代表Rotate
  • 缩放还原,Alt+S——S代表Scale

注意,先选中物体,再按ALT + R

image.png

ScaleZ=45度时,表示物体绕着Z轴旋转45度

1.gif

物体的尺寸,是指边界框的尺寸

image.png

2.2 【删除物体】

  • 鼠标右键,删除
  • Delete,直接删除
  • x确认后删除

image.png

双击修改,物体的名字

image.png

2.3 微调面板

左下角的微调面板可以对用户上一步操作进行微调,可以指定更精确的值

image.png

image.png

2.4 【grab抓取移动】

选中一个物体,按g,进入Grab状态,此时可以随意移动:

  • 再按x,锁定x轴移动
  • 再按y,锁定y轴移动
  • 再按z,锁定z轴移动

1.gif

2.5 【复制物体】

  • Ctrl+C/Ctrl+V,原位复制
  • shift+D,复制物体,并进入grab模式

1.gif

3. 游标和原点

游标:默认位置是(0,0,0),代表一个坐标,用于物体的的定位——新添加物体的出生点

image.png

游标的目视定位:点击一个物体(不要点到虚空) ,shift+鼠标右键

1.gif

3.1 【精确定位游标-吸附定位】

  • 编辑模式
  • 点模式
  • 选择一个点,网格-吸附-游标到选中项

image.png

3.2 【改变原点】

原点,物体的基准点,物体移动、旋转、缩放所围绕的点,默认在物体的几何中心

image.png

  • 编辑模式,点模式
  • 选择一个点,把游标吸附过来(见上)
  • 回到物体模式,右键点这个物体,再点设置原点、原点->3D游标

image.png

1.gif

3.3 游标还原、原点还原

游标还原到世界中心(0,0,0)

鼠标右键-> 吸附

image.png

原点还原到几何中心

鼠标右键-> 设置原点

image.png

4. 练习——Blender导出gltf模型,并用three查看

  • 添加平面,缩放到30*20
  • 游标的定位——更改几何体的出生点
  • shift+D,复制物体,按平面移动
  • 顶视图——几何体的按比例缩放
  • 前视图——将几何体放置在平面上

image.png

4.1 Blender导出gltf/glb模型

image.png

4.2 Three 导入gltf/glb模型

导入时,注意调整相机位置

image.png

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()