水材料

作者: skoll | 来源:发表于2021-12-26 17:25 被阅读0次

简介

1 .
https://doc.babylonjs.com/toolsAndResources/assetLibraries/materialsLibrary/waterMat
2 .需要安装的版本 https://github.com/BabylonJS/Babylon.js/blob/master/dist/preview%20release/materialsLibrary/babylon.waterMaterial.js
3 .基础例子 https://playground.babylonjs.com/#1SLLOJ#17

举例

var waterMesh = BABYLON.Mesh.CreateGround("waterMesh", 2048, 2048, 16, scene, false);
    var water = new BABYLON.WaterMaterial("water", scene, new BABYLON.Vector2(512, 512));
    // water.backFaceCulling = true;
    water.bumpTexture = new BABYLON.Texture("textures/waterbump.png", scene);
    water.windForce = 5;
    // 水的流速

    water.waveHeight = 1.7;
    // 海浪的高度:但是海浪高了之后就显示出三角形了,过渡不是很流畅

    water.bumpHeight = 0.5;
    // 表示反射和折射的扰动。波光粼粼的感觉.越小就越是原本添加的天空的贴图样式

    water.windDirection = new BABYLON.Vector2(-0.5, -0.5);
    // 风的方向
    
    // water.waterColor = new BABYLON.Color3(0.09, 0.65, 0.91);
    // water.colorBlendFactor = 0.8;
    // 这倆参数可以控制实现不同颜色的水

    water.waveLength=0.5
    // 海浪的波长

    water.addToRenderList(skybox);
    waterMesh.material = water;
截屏2021-12-26 下午4.59.13.png

1 .水下的鱼,以及周围天空盒的东西,以及河底。这里的鱼还是可以动的
2 .这里的水只能从外面看,不能在水里看.水里就露馅了

<!DOCTYPE html>
<!-- 添加小人,使用序列图 -->
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html" charset="utf-8"/>
    <title>Babylon - Getting Started</title>
    <!-- Link to the last version of BabylonJS -->
    <script src="https://preview.babylonjs.com/babylon.js"></script>
    <!-- Link to the last version of BabylonJS loaders to enable loading filetypes such as .gltf -->
    <script src="https://preview.babylonjs.com/loaders/babylonjs.loaders.min.js"></script>
    <!-- Link to pep.js to ensure pointer events work consistently in all browsers -->
    <script src="https://code.jquery.com/pep/0.4.1/pep.js"></script>
    <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/cannon.js/0.6.2/cannon.min.js"></script> -->
    <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.6.2/dat.gui.min.js"></script> -->
    <!-- <script src="https://preview.babylonjs.com/gui/babylon.gui.min.js"></script> -->
    <!-- <script src="https://cdn.rawgit.com/BabylonJS/Extensions/master/DynamicTerrain/dist/babylon.dynamicTerrain.min.js"></script> -->
    <script src="https://preview.babylonjs.com/proceduralTexturesLibrary/babylonjs.proceduralTextures.min.js"></script>
    <script src="https://preview.babylonjs.com/materialsLibrary/babylonjs.materials.min.js"></script>
    <!-- <script src="https://github.com/BabylonJS/Babylon.js/blob/master/dist/preview%20release/materialsLibrary/babylon.waterMaterial.js"></script> -->
    <script src="./water.js"></script>
</head>
<style>
    html, body {
        overflow: hidden;
        width   : 100%;
        height  : 100%;
        margin  : 0;
        padding : 0;
    }

    #renderCanvas {
        width   : 100%;
        height  : 100%;
        touch-action: none;
    }
</style>
<body>
    <canvas id="renderCanvas" touch-action="none"></canvas>
    <script>
        const canvas = document.getElementById("renderCanvas");
        var engine = null;
        // 这里还不能用let,不然就爆炸,获取不到engine
        var scene = null;
        var sceneToRender = null;
        const createDefaultEngine = function() { return new BABYLON.Engine(canvas, true, { preserveDrawingBuffer: true, stencil: true,  disableWebGL2Support: false}); };

        let createScene=async function(){
            // 关键函数都写在这个里面

                var scene = new BABYLON.Scene(engine)
                var camera = new BABYLON.ArcRotateCamera("Camera", 3 * Math.PI / 2, Math.PI / 4, 200, BABYLON.Vector3.Zero(), scene);
                camera.attachControl(canvas, true);
                
                var light = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(0, 1, 0), scene);

                // 添加天空盒
                let skybox=BABYLON.Mesh.CreateBox('skyBox',1000,scene)
                let skyboxMaterial=new BABYLON.StandardMaterial('skyBoxMaterial',scene)
                skyboxMaterial.backFaceCulling=false
                skyboxMaterial.reflectionTexture=new BABYLON.CubeTexture('https://playground.babylonjs.com/textures/skybox3',scene)
                skyboxMaterial.reflectionTexture.coordinatesMode=BABYLON.Texture.SKYBOX_MODE
                // 又是拼写错误,corrdinatesMode:这个拼错了
                skyboxMaterial.diffuseColor=new BABYLON.Color3(0,0,0)
                skyboxMaterial.specularColor=new BABYLON.Color3(0,0,0)
                skyboxMaterial.disableLighting=true
                skybox.material=skyboxMaterial
                // material最后还给拼错了

                let groundMaterial=new BABYLON.StandardMaterial('mat',scene)
                // groundMaterial.diffuseTexture=new BABYLON.Texture('https://playground.babylonjs.com/textures/grass.dds',scene)
                // 海草版本

                groundMaterial.diffuseTexture=new BABYLON.Texture('https://playground.babylonjs.com/textures/sand.jpg',scene)
                // 沙滩
                groundMaterial.diffuseTexture.vScale=groundMaterial.diffuseTexture.uScale=8

                var ground = BABYLON.Mesh.CreateGround("ground", 512, 512, 32, scene, false);
                ground.position.y = -1;
                ground.material = groundMaterial;
                    
                // Water
                var waterMesh = BABYLON.Mesh.CreateGround("waterMesh", 512, 512, 32, scene, false);
                waterMesh.position.y=10
                
                var water = new BABYLON.WaterMaterial("water", scene);
                water.bumpTexture = new BABYLON.Texture("https://playground.babylonjs.com/textures/waterbump.png", scene);

                water.windForce = -5;
                water.waveHeight = 0.4;
                water.windDirection = new BABYLON.Vector2(1, 1);
                water.waterColor = new BABYLON.Color3(0.1, 0.1, 0.6);
                water.colorBlendFactor = 0.3;
                water.bumpHeight = 0.1;
                water.waveLength = 0.1;

                // 把需要透射在水面的东西添加到render层里
                water.addToRenderList(skybox)
                water.addToRenderList(ground)

                // 如果岸边有树,可以添加到这里,如果河上面有飞鸟,可以添加到这里,这时湖面反应的不是单纯黑色的影子,而是有颜色的

                // 水里添加一条鱼
                let fish=await BABYLON.SceneLoader.ImportMeshAsync('',"http://127.0.0.1:8080/source/glb/", "fish.glb", scene)
                // fish.meshes[0].position.y=-1
                console.log('fish',fish)
                for(let i=0;i<fish.meshes.length;i++){
                    fish.meshes[i].position.y-=5
                    water.addToRenderList(fish.meshes[i])
                }

                waterMesh.material = water;
                return scene
        }

    window.initFunction=async function(){
        let asyncEngineCreation=async function(){
            try{
                return createDefaultEngine()
            }catch(e){
                return createDefaultEngine()
            }
        }

        window.engine=await asyncEngineCreation()
        if(!engine){
            throw('engine should not be null')
        }
        window.scene=createScene()
        
    }

    initFunction().then(()=>{
        scene.then((returnedScene)=>{
            sceneToRender=returnedScene
        })
        engine.runRenderLoop(function(){
            if(sceneToRender&&sceneToRender.activeCamera){
                sceneToRender.render()
            }
        })

    })

    window.addEventListener('resize',function(){
        engine.resize()
    })

</script>
</body>
</html>

海的表现

截屏2021-12-26 下午5.12.44.png
1 .https://www.ibm.com/resources/cloud/mayflower-ship-experience/#/experience/harbor
截屏2021-12-26 下午5.16.16.png
2 .有个这样的,但是现在这个网站好像被黑了,点击过去是博彩网站,真离谱啊。技术网站都有人黑
截屏2021-12-26 下午5.24.09.png

3 .https://www.mnnqns-stagnantpools.leoramaen.com/#

截屏2021-12-26 下午5.31.42.png
4 .这种卡通分格的也是https://playground.babylonjs.com/#TWQZAU#1。原来的题目写的是乐高分格

相关文章

  • 水材料

    简介 1 .https://doc.babylonjs.com/toolsAndResources/assetLi...

  • 水电安装水什么材料该省什么材料不该省

    我相信任何人装修都希望尽量的少花些钱,从而到达自己想要的效果。毕竟银子不多,只有省着点花了,把钱用到关键的地方。所...

  • C1710刘小渔的生态瓶

    材料:玻璃瓶,泥土,沙子,绿植,水

  • 科学小实验

    所需材料 所需材料有塑料瓶 2 个、水、胶带。 塑料瓶: 水: 胶带: 实验顺序: 1、将两个塑料瓶盖打孔,并将顶...

  • 2019-03-29

    富氢水瓷片材料介绍和应用 富氢瓷片、富氢水素片材料介绍和应用 产品名称:富氢水瓷片 规格型号:瓷片形,可根据客户定...

  • 早期幼儿厨艺—酥脆绿豆饼

    准备食材材料 水油皮——面粉:水:油 6:2:1 油酥——面粉:油 3 : 1 ...

  • 隐形眼镜使用注意事项(三)

    总结:现在市面上多见的还是以水凝胶为主的材料。在这个材料下还是推荐高含水的材料,虽然高含水的材料会吸取我们自己的泪...

  • 科学区 水的张力

    9月18日 科学区 投放材料:水的张力实验材料一组(滴管、水杯、塑料架子、回形针、量筒)

  • 水包水多彩仿石涂料施工步骤

    水包水多彩涂料,也称液态花岗岩涂料,产品是一种高分子材料,构成材料为纯水性、无毒、无害,施工完成后富有花岗岩、大理...

  • 牛奶燕麦粥

    材料:即食燕麦 牛奶 水做法:电饭锅水烧开,加入即食麦片,煮至粘稠,再加入牛奶即可

网友评论

      本文标题:水材料

      本文链接:https://www.haomeiwen.com/subject/ilxixrtx.html