34 Three.js的材质THREE.MeshDepthMaterial
来源:互联网 发布:核盾网络验证使用方法 编辑:程序博客网 时间:2024/06/04 18:02
简介
使用THREE.MeshDepthMaterial材质的物体,其外观不是由光照或某个材质属性决定的,二十有物体到摄像机的距离决定的。可以将这种材质与其他材质结合使用,从而很容易地创建出逐渐消失的效果。
摄像机的near属性和far属性之间的距离决定了场景的亮度和物体消失的速度。如果这个距离非常大,那么当物体远离摄像机时,只会稍微消失一点。如果这个距离非常小,那么物体消失的效果会非常明显。
相关属性
使用案例
我费了好大的力气,发现80+的版本不支持这个,全部都是这个颜色,换了一个60的版本的three.js文件,没问题
首先创建材质
var material = new THREE.MeshDepthMaterial();
然后给每一个网格赋值就好了
var cube = new THREE.CubeGeometry(25, 25, 25); var mesh = new THREE.Mesh(cube, material); scene.add(mesh);
案例
全部代码:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style type="text/css"> html, body { margin: 0; height: 100%; } canvas { display: block; } </style></head><body onload="draw();"></body><script src="https://johnson2heng.github.io/three.js-demo/lib/three-v60.js"></script><script src="https://johnson2heng.github.io/three.js-demo/lib/js/controls/OrbitControls.js"></script><script src="https://johnson2heng.github.io/three.js-demo/lib/js/libs/stats.min.js"></script><script src="https://johnson2heng.github.io/three.js-demo/lib/js/libs/dat.gui.min.js"></script><script> var renderer; function initRender() { renderer = new THREE.WebGLRenderer({antialias: true,alpha:true}); renderer.setSize(window.innerWidth, window.innerHeight); //告诉渲染器需要阴影效果 //renderer.shadowMap.enabled = true; //renderer.shadowMap.type = THREE.PCFSoftShadowMap; // 默认的是,没有设置的这个清晰 THREE.PCFShadowMap renderer.setClearColor(0x000000); document.body.appendChild(renderer.domElement); } var camera; function initCamera() { camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000); camera.position.set(0, 40, 100); camera.lookAt(new THREE.Vector3(0, 0, 0)); } var scene; function initScene() { scene = new THREE.Scene(); } var ambientLight, directionalLight; function initLight() { } var cube, plane, meshMaterial; function initModel() { //辅助工具 var helper = new THREE.AxisHelper(10); scene.add(helper); var s = 25; var cube = new THREE.CubeGeometry(s, s, s); var material = new THREE.MeshDepthMaterial(); for (var i = 0; i < 3000; i++) { var mesh = new THREE.Mesh(cube, material); mesh.position.x = 800 * ( 2.0 * Math.random() - 1.0 ); mesh.position.y = 800 * ( 2.0 * Math.random() - 1.0 ); mesh.position.z = 800 * ( 2.0 * Math.random() - 1.0 ); mesh.rotation.x = Math.random() * Math.PI; mesh.rotation.y = Math.random() * Math.PI; mesh.rotation.z = Math.random() * Math.PI; mesh.updateMatrix(); scene.add(mesh); } } //初始化dat.GUI简化试验流程 var gui; function initGui() { //声明一个保存需求修改的相关数据的对象 controls = { }; var gui = new dat.GUI(); } //初始化性能插件 var stats; function initStats() { stats = new Stats(); document.body.appendChild(stats.dom); } //用户交互插件 鼠标左键按住旋转,右键按住平移,滚轮缩放 var controls; function initControls() { controls = new THREE.OrbitControls(camera, renderer.domElement); // 如果使用animate方法时,将此函数删除 //controls.addEventListener( 'change', render ); // 使动画循环使用时阻尼或自转 意思是否有惯性 controls.enableDamping = true; //动态阻尼系数 就是鼠标拖拽旋转灵敏度 //controls.dampingFactor = 0.25; //是否可以缩放 controls.enableZoom = true; //是否自动旋转 controls.autoRotate = false; //设置相机距离原点的最远距离 controls.minDistance = 50; //设置相机距离原点的最远距离 controls.maxDistance = 200; //是否开启右键拖拽 controls.enablePan = true; } function render() { renderer.render(scene, camera); } //窗口变动触发的函数 function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); render(); renderer.setSize(window.innerWidth, window.innerHeight); } function animate() { //更新控制器 render(); //更新性能插件 stats.update(); //controls.update(); requestAnimationFrame(animate); } function draw() { initRender(); initScene(); initCamera(); initLight(); initModel(); initGui(); //initControls(); initStats(); animate(); window.onresize = onWindowResize; }</script></html>
阅读全文
0 0
- 34 Three.js的材质THREE.MeshDepthMaterial
- three.js 04-02 之 MeshDepthMaterial 材质
- 33 Three.js的材质THREE.MeshBasicMaterial
- 使用Three.js的材质
- three.js的各种材质
- 35 Three.js的融合材质
- three.js中材质的应用
- 36 Three.js高级材质THREE.MeshLambertMaterial
- 37 Three.js高级材质THREE.MeshPhongMaterial
- 38 Three.js高级材质THREE.ShaderMaterial
- three.js 源码注释(五十一)Material /MeshDepthMaterial.js
- THREE.JS的材质material一些注意的属性
- 32 Three.js的材质的种类和共有属性
- THREE.JS中常用的3种材质
- 39 Three.js线性几何体材质THREE.LineBasicMaterial
- 40 Three.js线性几何体材质THREE.LineDashedMaterial
- three.js 04-01 之 MeshBasicMaterial 材质
- three.js 04-03 之联合材质
- Spring bean提供了3中注入方式
- Windows Server 2016正式版教程:安装、激活、设置
- 通过JDBC访问数据库的基本步骤
- Qt::TOOL窗口关闭但进程仍在运行解决方案
- HDU 1495 非常可乐——bfs
- 34 Three.js的材质THREE.MeshDepthMaterial
- sicp 练习2.4
- c++筛选法素数(任意a,b区间内的素数)
- 读史笔记——秦史
- [LeetCode Solution 98]: Validate Binary Search Tree
- [转]windows下安装Python虚拟环境virtualenvwrapper-win
- 如何用消息系统避免分布式事务?
- JBOSS配置文档
- 张小龙:微信背后的产品观