JS Library 学习笔记:Three.js 初见面,在2D画面创造三维世界 (三)

在Three.js系列第一篇有提到,物件的材质光源是3D的重要元素之一,Three.js也有相关的设定。

建立具有「材质」的立体图型

Three.js提供多种不同材质,基本上与渲染的运算方式与技术有关,像是不受光源影响的MeshBasicMaterial、具有镜面光泽适合模拟光滑表面的MeshPhongMaterial、不具光泽的MeshLambertMaterial,以及比MeshPhongMaterialMeshLambertMaterial更精致但也更耗效能、基於物理表现的渲染 (Physically Based Rendering, PBR) 的MeshStandardMaterial等,都可依照需求选择使用。

材质一样需要先利用new建构出材质後,再利用Mesh网格来生成物件,只需要将建构出来的图型与材质作为参数传入即可。

//建构立体图形
const boxGeometry = new THREE.BoxGeometry();
//建构基础材质
const material = new THREE.MeshBasicMaterial( { color: 0xa45 } );
//mesh产生具有材质的物件
const cube = new THREE.Mesh( boxGeometry, material );

MeshStandardMaterial会受到光源影响,能呈现更自然的立体感,同时,若没有任何光源,尽管物体有成功被渲染出来,也会因为没有光从物体反射出去,所以「无法被看见」;因此,使用MeshStandardMaterial需要一并加上光源,这边使用的是不具方向的环境光源AmbientLight,物体将会与真实世界一般,反射光而被看见。

const boxGeometry = new THREE.BoxGeometry();
//改用会受光源影响的MeshStandardMaterial
const material = new THREE.MeshStandardMaterial( { color: 0xa45} );
const cube = new THREE.Mesh( boxGeometry, material );

//建构环境光源
const light = new THREE.AmbientLight( 0xffffff );
//将光源加进场景中
scene.add( light );

<<:  Day27:歪楼+卡文(全英文笔记 - I)

>>:  Day29 DOM 介绍

【*】AI Go Senior 补充 (2021)

环境安装 在使用Python开发AI时,由於需时时查看处理中的训练资料,於是大多使用Jupyter ...

[Day08] TS:什麽!型别也能做条件判断?认识 Conditional Types

上面这个是今天会提到的内容,如果你已经可以轻松看懂,欢迎直接左转去看我队友们的精彩文章! 昨天我们...

远距 Scrum

前言 前两天分享了远距工作的好处与挑战,今天针对应用面来谈谈 Scrum 活动如何在远距工作的情况下...

CDCP-001 Dump-出现在 GAQM CDCP-001 认证考试中

GAQM:日期中心 - CDCP-001 考试是您职业生涯中非常显着的提升。但也许您有没有想过为什麽...

机器人/AGV/AMR安全标准

与国际接轨,免不了的需要共通性标准,即要符合最小有效沟通成本,也要可以将合作伙伴的利益最大化(传说中...