19 Three.js实现雾化效果

案例查看地址:http://www.wjceo.com/blog/threejs/2018-02-12/21.html

如果使用three.js实现雾化效果很简单,只需要在给场景scene对象的fog属性添加值就好了,比如:

        scene.fog = new THREE.Fog(0xffffff,100,120);
这样就给场景添加了雾化的效果,在实例化雾化的对象的时候,需要传三个值(雾的颜色,雾化开始的距离相机的位置,全雾化距离相机的位置)。



添加上了就会显示以上的效果,设置雾化的过程比较短,所以雾化的效果比较明显。


还有一个种是随着距离呈指数增长的雾化效果,只需要设置雾的颜色和浓度即可。如:

scene.fog = new THREE.FogExp2(0xffffff,0.02);
效果如下:



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Three.js实现星云效果,可以按照以下步骤进行: 1. 引入Three.js库文件和需要的插件 ``` <script src="https://threejs.org/build/three.min.js"></script> <script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script> ``` 2. 创建场景、相机和渲染器 ``` var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); camera.position.z = 5; var renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); ``` 3. 创建星云材质 ``` var starMaterial = new THREE.PointsMaterial({ color: 0xffffff, size: 0.1, map: THREE.ImageUtils.loadTexture( "https://threejs.org/examples/textures/sprites/disc.png" ), blending: THREE.AdditiveBlending, transparent: true, depthWrite: false }); ``` 4. 创建星云模型 ``` var starGeometry = new THREE.Geometry(); for (var i = 0; i < 10000; i++) { var star = new THREE.Vector3(); star.x = THREE.Math.randFloatSpread(2000); star.y = THREE.Math.randFloatSpread(2000); star.z = THREE.Math.randFloatSpread(2000); starGeometry.vertices.push(star); } var stars = new THREE.Points(starGeometry, starMaterial); scene.add(stars); ``` 5. 创建控制器,实现交互操作 ``` var controls = new THREE.OrbitControls(camera, renderer.domElement); controls.enableDamping = true; controls.dampingFactor = 0.25; controls.enableZoom = false; ``` 6. 渲染场景 ``` function animate() { requestAnimationFrame(animate); controls.update(); renderer.render(scene, camera); } animate(); ``` 7. 完整代码示例 ``` <!DOCTYPE html> <html> <head> <title>Starfield Simulation</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> body { margin: 0; padding: 0; overflow: hidden; } </style> </head> <body> <script src="https://threejs.org/build/three.min.js"></script> <script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script> <script> var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); camera.position.z = 5; var renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); var starMaterial = new THREE.PointsMaterial({ color: 0xffffff, size: 0.1, map: THREE.ImageUtils.loadTexture( "https://threejs.org/examples/textures/sprites/disc.png" ), blending: THREE.AdditiveBlending, transparent: true, depthWrite: false }); var starGeometry = new THREE.Geometry(); for (var i = 0; i < 10000; i++) { var star = new THREE.Vector3(); star.x = THREE.Math.randFloatSpread(2000); star.y = THREE.Math.randFloatSpread(2000); star.z = THREE.Math.randFloatSpread(2000); starGeometry.vertices.push(star); } var stars = new THREE.Points(starGeometry, starMaterial); scene.add(stars); var controls = new THREE.OrbitControls(camera, renderer.domElement); controls.enableDamping = true; controls.dampingFactor = 0.25; controls.enableZoom = false; function animate() { requestAnimationFrame(animate); controls.update(); renderer.render(scene, camera); } animate(); </script> </body> </html> ``` 这样就可以在Vue项目中使用Three.js实现星云效果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值