MeshDepthMaterial
描述
一种基于相机视距渲染几何体的特殊材质,深度值会被映射到黑白渐变(最近处为白色,最远处为黑色)
构造函数(Constructor)
构造函数 | 描述 |
---|
new THREE.MeshDepthMaterial(parameters?: Object) | 创建一个材质。 |
参数 | 描述 |
parameters | (可选) 材质配置对象,支持以下所有属性 |
属性(Properties)
属性 | 类型 | 描述 |
---|
贴图控制 | | |
.map | Texture | 基础颜色贴图(支持alpha通道)。默认值为 null 。 |
.alphaMap | Texture | 灰度贴图控制透明度(黑透明白不透明),默认值为 null 。 |
.displacementMap | Texture | 顶点位移贴图(白色区域位移最大),默认值为 null 。 |
位移调节 | | |
.displacementScale | Float | 默认值为 1 。 |
.displacementBias | Float | 默认值为 0 。 |
渲染样式 | | |
.wireframe | Boolean | 启用线框模式,默认值为 false 。 |
.depthPacking | Constant | 深度值压缩算法,默认值为 BasicDepthPacking 。 |
线宽限制:由于WebGL规范限制,wireframeLinewidth实际渲染时总为1 | | |
方法(Methods)
示例
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const depthMaterial = new THREE.MeshDepthMaterial({depthPacking: THREE.RGBADepthPacking,map: new THREE.TextureLoader().load('textures/diffuse.jpg'), alphaMap: new THREE.TextureLoader().load('textures/alpha.png'), displacementMap: new THREE.TextureLoader().load('textures/height.png'),displacementScale: 0.5,displacementBias: -0.25,wireframe: false
});
const geometry = new THREE.TorusKnotGeometry(1, 0.4, 100, 16);
const mesh = new THREE.Mesh(geometry, depthMaterial);
scene.add(mesh);
scene.add(new THREE.GridHelper(10, 10));
scene.add(new THREE.AmbientLight(0x404040));
camera.position.z = 3;
function animate() {requestAnimationFrame(animate);mesh.rotation.x += 0.01;mesh.rotation.y += 0.01;renderer.render(scene, camera);
}
animate();
window.addEventListener('resize', () => {camera.aspect = window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();renderer.setSize(window.innerWidth, window.innerHeight);
});