WebGL/Threejs瀑布水流粒子效果

webgl瀑布效果

初始化场景

function init () {

   scene = new THREE.Scene();
   camera =  new THREE.PerspectiveCamera (45, scr.w / scr.h, 0.1, 10000);

   renderer = new THREE.WebGLRenderer ({ antialias: true });
   renderer.gammaInput = true;
   renderer.gammaOutput = true;
   renderer.setClearColor (new THREE.Color (0xffffff, 1.0));
   renderer.setSize (scr.w, scr.h);

   /* Camera positioning and pointing it to the center of the scene.  */
   camera.position.x = -waterfall.startX * 2;
   camera.position.y = waterfall.h * 4;
   camera.position.z = waterfall.h * 4;
   /* Look at the center of the scene.  */
   camera.lookAt (0, 0, 0);

   /* Add the output of the renderer to the html element.  */
   document.getElementById("WebGL-output").appendChild
               (renderer.domElement);

   /* Camera mouse controls.  */
   cameraControls = new THREE.OrbitAndPanControls (camera,
                  renderer.domElement);
   cameraControls.target.set (0,0,0);

   /* Sun light.  */
   var sunLight = new THREE.DirectionalLight (0x0f0f0f, 100.0);
   sunLight.position.set (-riverOutput.startX, 64000,
            riverOutput.dimZ + 20).normalize();
   scene.add (sunLight);

   /* Fog. */
   scene.fog = new THREE.FogExp2( 0x2f2f2f, 0.00050 );

   window.addEventListener ('resize', onWindowResize, false);

}

 

模型场景创建

webgl瀑布效果

function createTreeTrunk () {

   var treeTrunkGeometry, treeTrunkMaterial, treeTrunkTex;


   treeTrunkGeometry = new THREE.CylinderGeometry (treeTrunkStruct.radius,
                     treeTrunkStruct.radius,
                     treeTrunkStruct.height,
                     100, 100, false);
   treeTrunkTex = applyTex ("textures/treeTrunkTex.jpg", 1, 1);
   treeTrunkMaterial = new THREE.MeshBasicMaterial ({ map: treeTrunkTex });
   treeTrunk = new THREE.Mesh (treeTrunkGeometry, treeTrunkMaterial);

   treeTrunk.position.x = treeTrunkStruct.posX;
   treeTrunk.position.y = treeTrunkStruct.posY;
   treeTrunk.position.z = treeTrunkStruct.posZ;

   treeTrunk.rotation.x = (treeTrunkStruct.rotX * Math.PI) / 180.0;
   treeTrunk.rotation.z = (treeTrunkStruct.rotZ * Math.PI) / 180.0;

   treeTrunk.visible = false;

   scene.add (treeTrunk);

}

function createLake (dimX, dimY, posX, posY, posZ, rotX) {
   var lLake, lLakeGeometry, lLakeMaterial, lLakeTex;

   lLakeGeometry = new THREE.PlaneGeometry (dimX, dimY);
   lLakeTex = applyTex ("textures/water.jpg", 50, 50);
   lLakeMaterial = new THREE.MeshBasicMaterial ({ color:0x00005f,
                         side: THREE.DoubleSide,
                         map:lLakeTex });
   lLake = new THREE.Mesh (lLakeGeometry, lLakeMaterial);

   lLake.position.x = posX;
   lLake.position.y = posY;
   lLake.position.z = posZ;

   lLake.rotation.x = (rotX * Math.PI) / 180.0;

   scene.add (lLake);
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

allenjiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值