在Three.js系列第一篇有提到,物件的材质与光源是3D的重要元素之一,Three.js也有相关的设定。
Three.js提供多种不同材质,基本上与渲染的运算方式与技术有关,像是不受光源影响的MeshBasicMaterial
、具有镜面光泽适合模拟光滑表面的MeshPhongMaterial
、不具光泽的MeshLambertMaterial
,以及比MeshPhongMaterial
和MeshLambertMaterial
更精致但也更耗效能、基於物理表现的渲染 (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 );
环境安装 在使用Python开发AI时,由於需时时查看处理中的训练资料,於是大多使用Jupyter ...
上面这个是今天会提到的内容,如果你已经可以轻松看懂,欢迎直接左转去看我队友们的精彩文章! 昨天我们...
前言 前两天分享了远距工作的好处与挑战,今天针对应用面来谈谈 Scrum 活动如何在远距工作的情况下...
GAQM:日期中心 - CDCP-001 考试是您职业生涯中非常显着的提升。但也许您有没有想过为什麽...
与国际接轨,免不了的需要共通性标准,即要符合最小有效沟通成本,也要可以将合作伙伴的利益最大化(传说中...