MeshDepthMaterial
是一种可以根据距离摄像机的远近而展示不同效果的材质。跟
MeshBasicMaterial
一样也是有一个参数,即设置项,但是这个材质不能设置颜色。例子中给出的代码跟上面的几乎一模一样。这里需要注意的地方是
MeshDepthMaterial
材质跟摄像机的远近有着非常重要的联系,所以你需要设置摄像机的
near
和
far
来表示到底有多近以及有多远。
1 2 3 4 5 6 7 8
// 第三个参数是near 第四个参数是far var camera = newTHREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 24, 100 ); var scene = newTHREE.Scene(); var geometry = newTHREE.BoxGeometry(10, 10, 10,3, 3, 3); var material = newTHREE.MeshDepthMaterial(); mesh = newTHREE.Mesh(geometry, material); scene.add(mesh);
var geometry = newTHREE.Geometry(); geometry.vertices.push(newTHREE.Vector3(0, 0, 0)); for (let i = 1; i < 10; i++) { geometry.vertices.push(newTHREE.Vector3(i, i - 1, 0)); geometry.vertices.push(newTHREE.Vector3(i, -i , 0)); geometry.vertices.push(newTHREE.Vector3(-i, -i, 0)); geometry.vertices.push(newTHREE.Vector3(-i, i, 0)); } var material = newTHREE.LineBasicMaterial({ color: '#ffffff', }); var line = newTHREE.Line(geometry, material); scene.add(line);
效果如下:
我们稍加改动,改成
LineDashedMaterial
的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
var geometry = newTHREE.Geometry(); geometry.vertices.push(newTHREE.Vector3(0, 0, 0)); for (let i = 1; i < 10; i++) { geometry.vertices.push(newTHREE.Vector3(i, i - 1, 0)); geometry.vertices.push(newTHREE.Vector3(i, -i , 0)); geometry.vertices.push(newTHREE.Vector3(-i, -i, 0)); geometry.vertices.push(newTHREE.Vector3(-i, i, 0)); } var material = newTHREE.LineDashedMaterial({ color: '#ffffff', scale: 1, dashSize: 3, gapSize: 1, }); var line = newTHREE.Line(geometry, material); line.computeLineDistances(); scene.add(line);