头图

第一天 Blender操作 | 大帅老猿threejs特训【超详细】

前言

这一天主要是基础理论的学习。

本人学习资料仓库

一、大纲

image.png

image.png

image.png

二、THREE 基础概念

drop-donuts-singleE05.gif
image.png

image.png

透视相机模拟人眼的视角,通常用的比较多。正交相机,远近一样,没有近小远大的感觉。
image.png

image.png

环境光给一点就行,给太多不真实。方向光,阴影太暗时补光。
image.png
漫反射,基础颜色,如给苹果加红色。
image.png

三、THREE API

image.png

image.png

image.png

image.png

一般用左边的方式,右边的会浪费空间
image.png

四、获取模型

glTF格式,blender是目前3D软件唯一可导入导出该格式的软件。
image.png

五、Blender 快捷键

image.png

六、Blender 初体验

导入甜甜圈文件,记得选择gltf格式,

image.png
由于模型尺寸过大,要稍微移动下,就看不到后面的部分,因此,需进行缩小操作。

缩放后,需ctrl + a 选择全部变换进行应用,以免缩放比例对后面操作的影响。

image.png

点击物体,选中了物体,这时左上角的物体模式就可以去切换为编辑模式【tab】.

image.png

分离选中项,可拆分出部分模型。利用此操作可以把上图组合选中的面包拆分成单个,如下图的操作。

image.png

如下图,发现每一次只能拆出一小部分,多次重复操作,就能拆出一个完整的面包!!
image.png

模拟甜甜圈从空中掉落到托盘的过程

分别给每个甜甜圈加刚体

image.png

给托盘加刚体,设置被动
image.png

效果如下

drop-donuts.gif

烘焙到关键帧

image.png

导出为win10可识别的glb格式,打开预览

drop-donuts-singleE01.gif

七、操作说明

编辑模式下,可切换点线面,ctrl + 点击选中,可以实现点线面的多选。

image.png

按键 / 可以独立操作物体

drop-donuts-singleE.gif

八、开始使用我们前面创建的面包动画

不懂的属性查文件,文档写的很清楚
image.png

按照前文知识,我的代码如下

const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.01, 10)
// camera.position.set(0,0,2) 放开后即可看到绿色的正方体

// 渲染器 WebGL1Renderer
const renderer = new THREE.WebGL1Renderer({ 
  // 抗锯齿
  antialias: true
})
renderer.setSize(window.innerWidth, window.innerHeight)
document.body.appendChild(renderer.domElement)

//  创建环境光,让所有东西都亮起来
const ambientLight = new THREE.AmbientLight(0xffffff, 0.5)
scene.add(ambientLight)

// 物体  创建立方体:长宽高均为 1
const boxGeometry = new THREE.BoxGeometry(1, 1, 1)

// 材质  MeshBasicMaterial:基础材质
const boxMaterial = new THREE.MeshBasicMaterial({ color: 0x00ff00})

const boxMesh = new THREE.Mesh(boxGeometry, boxMaterial)
scene.add(boxMesh)

// 帧循环
function animation() {
  requestAnimationFrame(animation)
  renderer.render(scene, camera)
}

// 动画入口
animation()

此时眼前一黑,啥也看不见。

image.png

补充知识

下面我创建面片plane, 这里存在背面剔除的3d学知识点,如下图所示

drop-donuts-singleE02.gif

让我们进入透视相机的视角【此处为右手坐标系】

drop-donuts-singleE03.gif

回到前面,“眼前一黑”是因为没设置相机位置,前文的代码里我加了这个注释,放开后就可看到正方体了

drop-donuts-singleE04.gif

加控制器,就可以用鼠标控制物体

const controls = new OrbitControls(camera, renderer.domElement)

drop-donuts-singleE05.gif

导入donuts.glb

使用THREE.AnimationMixer创建动画混合器,让所有动画共享该混合器,遍历执行,记得要在真循环里面执行该混合器的更新 mixer?.update(0.02)【0.02是必要的,没数值,它不知道隔多久更新】,就可以让动画动起来了。现在默认是循环播放,优化一下,设置播放一次,停在最后一帧。代码如下

  // 当场景中的多个对象独立动画时,每个对象都可以使用同一个动画混合器。
  mixer = new THREE.AnimationMixer(gltf.scene)
  // play each animation
  const clips = gltf.animations 

  clips.forEach(clip => {
    const action = mixer.clipAction(clip)
    // 只播放一次
    action.loop = THREE.LoopOnce
    action.play()
    // 动画停在最后一帧
    action.clampWhenFinished = true
  })
function animation() {
  requestAnimationFrame(animation)
  renderer.render(scene, camera)
  controls.update()
  // 0.02 必须填否则没有数据
  mixer?.update(0.02)
}

效果如下

drop-donuts-singleE06.gif

加下背景色、旋转,完结撒花!

drop-donuts-singleE08.gif

有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。

1 声望
0 粉丝
0 条评论
推荐阅读
「多图预警」完美实现一个@功能
一天产品大大向 boss 汇报完研发成果和产品业绩产出,若有所思的走出来,劲直向我走过来,嘴角微微上扬。产品大大:boss 对我们的研发成果挺满意的,balabala...(内心 OS:不听,讲重点)产品大大:咱们的客服 I...

wuwhs39阅读 4.7k评论 5

封面图
安全地在前后端之间传输数据 - 「3」真的安全吗?
在「2」注册和登录示例中,我们通过非对称加密算法实现了浏览器和 Web 服务器之间的安全传输。看起来一切都很美好,但是危险就在哪里,有些人发现了,有些人嗅到了,更多人却浑然不知。就像是给门上了把好锁,还...

边城31阅读 7.1k评论 5

封面图
涨姿势了,有意思的气泡 Loading 效果
今日,群友提问,如何实现这么一个 Loading 效果:这个确实有点意思,但是这是 CSS 能够完成的?没错,这个效果中的核心气泡效果,其实借助 CSS 中的滤镜,能够比较轻松的实现,就是所需的元素可能多点。参考我们...

chokcoco20阅读 2k评论 2

在前端使用 JS 进行分类汇总
最近遇到一些同学在问 JS 中进行数据统计的问题。虽然数据统计一般会在数据库中进行,但是后端遇到需要使用程序来进行统计的情况也非常多。.NET 就为了对内存数据和数据库数据进行统一地数据处理,发明了 LINQ (L...

边城17阅读 1.9k

封面图
【已结束】SegmentFault 思否写作挑战赛!
SegmentFault 思否写作挑战赛 是思否社区新上线的系列社区活动在 2 月 8 日 正式面向社区所有用户开启;挑战赛中包含多个可供作者选择的热门技术方向,根据挑战难度分为多个等级,快来参与挑战,向更好的自己前进!

SegmentFault思否20阅读 5.6k评论 10

封面图
过滤/筛选树节点
又是树,是我跟树杠上了吗?—— 不,是树的问题太多了!🔗 相关文章推荐:使用递归遍历并转换树形数据(以 TypeScript 为例)从列表生成树 (JavaScript/TypeScript) 过滤和筛选是一个意思,都是 filter。对于列表来...

边城18阅读 7.6k评论 3

封面图
Vue2 导出excel
2020-07-15更新 excel导出安装 {代码...} src文件夹下新建一个libs文件夹,新建一个excel.js {代码...} vue页面中使用 {代码...} ===========================以下为早期的文章今天在开发的过程中需要做一个Vue的...

原谅我一生不羁放歌搞文艺14阅读 19.8k评论 9

有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。

1 声望
0 粉丝
宣传栏