babylon.js入门基础【创建babylon场景需要什么】【绘制球】【绘制正方形】【绘制平面】

前言

创建场景七大步

第一步: 引入在线的babylon包 :

<script src="https://cdn.babylonjs.com/babylon.js"></script>

第二步:创建一个容器:

 <canvas id="renderCanvas"></canvas>

第三步:样式

    <style>
        html,
        body {
            overflow: hidden;
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
        }

        #renderCanvas {
            width: 100%;
            height: 100%;
            touch-action: none;
        }
    </style>

第四步:获取到canvas的dom对象:😀😀固定写法

        var canvas = document.getElementById("renderCanvas"); 



第五步:实例化3d引擎😀😀固定写法

 var engine = new BABYLON.Engine(canvas, true); 

第六步:创建场景并返回场景对象(场景包含有 场景(Scene),相机(FreeCamera),灯光(HemisphericLight)、绘制(CreateSphere),地面(CreateGround),)🥰🥰🥰这个地方很关键

 var createScene = function () {
            //    创建场景对象
            var scene = new BABYLON.Scene(engine);
            //  创建FreeCamera, 并把相机位置设置到(x:0, y:5, z:-10)
            var camera = new BABYLON.FreeCamera("camera1",
                new BABYLON.Vector3(0, 5, -10), scene);
            //    将相机朝向设置到原点
            camera.setTarget(BABYLON.Vector3.Zero());
            //  相机事件绑定到canvas对象上面
            camera.attachControl(canvas, true);
            // 创建一个平衡光,将灯光位置设置到0 1 0
            var light = new BABYLON.HemisphericLight("light",
                new BABYLON.Vector3(0, 1, 0), scene);
            // 把灯光 0-1
            light.intensity = 0.7;

            // 创建一个球题 支持六个配置项 名称, 分割段数, 直径, 放置的场景, updatable, sideOrientation
            var sphere = BABYLON.Mesh.CreateSphere('sphere1', 16, 2, scene);
            // 将球上调到原点以上
            sphere.position.y = 0.1;

            // 创建一个自定义的地面
            var myGround = BABYLON.MeshBuilder.CreateGround("myGround", {width: 6, height: 4, subdivsions: 4}, scene);//subdivsions:将地面分成的几块
            // 返回场景
            return scene;
        };

第六步:获取到创建的场景并渲染出来😀😀固定写法

        var scene = createScene(); //获取到创建的场景
        // 循环渲染,性能最大没秒六十帧
        engine.runRenderLoop(function () {
            scene.render();
        });

第七步:浏览器大小变动时,触发引擎的重载状态😀😀固定写法

 window.addEventListener("resize", function () {
            engine.resize();
        });

1、绘制一个小球

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>创建基础的模型</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
        }

        #idcanvas {
            width: 100%;
            height: 100%;
            /* 禁用元素上的所有手势 */
            touch-action: none;
        }
    </style>
</head>

<body>
    <script src="https://cdn.babylonjs.com/babylon.js"></script>
    <canvas id="idcanvas"></canvas>
 
</body>
<script>
    // 1-获取canvas 的dom对象
    var canvas = document.querySelector('#idcanvas');
    // console.log(canvas,'111111');
    // 2-实例化3d引擎
    var engine = new BABYLON.Engine(canvas, true);
    // console.log(engine,'222');
    // 3-创建场景并返回场景对象
    var createScene = function () {
        // 3-1 创建场景对象---(把实例化3d引擎放入里边)
        var scene = new BABYLON.Scene(engine)
        // 3-2 创建相机(FreeCamera),并把相机位置设置到(x:0,y:5,z:-10)  new BABYLON.Vector3(x, y, z)的对象来表示模型网格的位置、旋转以及缩放
        var camera = new BABYLON.FreeCamera('camera1', new BABYLON.Vector3(0, 5, -10), scene)
        // 3-3 :将相机朝向设置到原点
        camera.setTarget(BABYLON.Vector3.Zero());
        // 3-4:相机事件绑定到canvas对象上面
        camera.attachControl(canvas, true);
        // 3-5 :创建灯光,灯光为止设置到 0 1 0
        var light = new BABYLON.HemisphericLight("light", new BABYLON.Vector3(0, 1, 0), scene);
        //  灯光调暗一点  0-1范围之间
        light.intensity = 0.7;
        // 3-6 绘制一个球,支持六个配置项 名称, 分割段数, 直径, 放置的场景, updatable,sideOrientation
        var sphere = new BABYLON.Mesh.CreateSphere("sphere1",16,2,scene);
        //  调高一点
         sphere.position.y = 2;
        // 3-7 创建一个自定义的地面
        var myGround = BABYLON.MeshBuilder.CreateGround("myGround", { width: 6, height: 4, subdivsions: 4 }, scene)//化悲愤度暖白分成几块
        // 3-8 返回场景
        return scene;

    }
    // 4- 获取到创建的场景
    var scene = createScene();
    // 4-1 循环渲染,性能最大每秒60帧
    engine.runRenderLoop(function () {
        scene.render();
    })
    // 5- 浏览器大小变动时,触发引擎的重载状态
    window.addEventListener("resize", function () {
        engine.resize();
    })
    engine
</script>

</html>

2-绘制一个正方形 box.position.y = 2 设置模型高低

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>创建基础的模型</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
        }

        #idcanvas {
            width: 100%;
            height: 100%;
            /* 禁用元素上的所有手势 */
            touch-action: none;
        }
    </style>
</head>

<body>
    <script src="https://cdn.babylonjs.com/babylon.js"></script>
    <canvas id="idcanvas"></canvas>
 
</body>
<script>
    // 1-获取canvas 的dom对象
    var canvas = document.querySelector('#idcanvas');
    // console.log(canvas,'111111');
    // 2-实例化3d引擎
    var engine = new BABYLON.Engine(canvas, true);
    // console.log(engine,'222');
    // 3-创建场景并返回场景对象
    var createScene = function () {
        // 3-1 创建场景对象---(把实例化3d引擎放入里边)
        var scene = new BABYLON.Scene(engine)
        // 3-2 创建相机(FreeCamera),并把相机位置设置到(x:0,y:5,z:-10)  new BABYLON.Vector3(x, y, z)的对象来表示模型网格的位置、旋转以及缩放
        var camera = new BABYLON.FreeCamera('camera1', new BABYLON.Vector3(0, 5, -10), scene)
        // 3-3 :将相机朝向设置到原点
        camera.setTarget(BABYLON.Vector3.Zero());
        // 3-4:相机事件绑定到canvas对象上面
        camera.attachControl(canvas, true);
        // 3-5 :创建灯光,灯光为止设置到 0 1 0
        var light = new BABYLON.HemisphericLight("light", new BABYLON.Vector3(0, 1, 0), scene);
        //  灯光调暗一点  0-1范围之间
        light.intensity = 0.7;
    
        // 3-6-1 绘制正方形
        var box = BABYLON.MeshBuilder.CreateBox("BOX", {}, scene);
        box.position.y = 2
     
        // 3-7 创建一个自定义的地面
        var myGround = BABYLON.MeshBuilder.CreateGround("myGround", { width: 6, height: 4, subdivsions: 4 }, scene)//化悲愤度暖白分成几块
        // 3-8 返回场景
        return scene;

    }
    // 4- 获取到创建的场景
    var scene = createScene();
    // 4-1 循环渲染,性能最大每秒60帧
    engine.runRenderLoop(function () {
        scene.render();
    })
    // 5- 浏览器大小变动时,触发引擎的重载状态
    window.addEventListener("resize", function () {
        engine.resize();
    })
    engine
</script>

</html>

3-设置一个平面

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>创建基础的模型</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
        }

        #idcanvas {
            width: 100%;
            height: 100%;
            /* 禁用元素上的所有手势 */
            touch-action: none;
        }
    </style>
</head>

<body>
    <script src="https://cdn.babylonjs.com/babylon.js"></script>
    <canvas id="idcanvas"></canvas>
 
</body>
<script>
    // 1-获取canvas 的dom对象
    var canvas = document.querySelector('#idcanvas');
    // console.log(canvas,'111111');
    // 2-实例化3d引擎
    var engine = new BABYLON.Engine(canvas, true);
    // console.log(engine,'222');
    // 3-创建场景并返回场景对象
    var createScene = function () {
        // 3-1 创建场景对象---(把实例化3d引擎放入里边)
        var scene = new BABYLON.Scene(engine)
        // 3-2 创建相机(FreeCamera),并把相机位置设置到(x:0,y:5,z:-10)  new BABYLON.Vector3(x, y, z)的对象来表示模型网格的位置、旋转以及缩放
        var camera = new BABYLON.FreeCamera('camera1', new BABYLON.Vector3(0, 5, -10), scene)
        // 3-3 :将相机朝向设置到原点
        camera.setTarget(BABYLON.Vector3.Zero());
        // 3-4:相机事件绑定到canvas对象上面
        camera.attachControl(canvas, true);
        // 3-5 :创建灯光,灯光为止设置到 0 1 0
        var light = new BABYLON.HemisphericLight("light", new BABYLON.Vector3(0, 1, 0), scene);
        //  灯光调暗一点  0-1范围之间
        light.intensity = 0.7;
    

        // 3-6-4 绘制一个配置项的平面
        var myplane = BABYLON.MeshBuilder.CreatePlane("myplane",{width:5,height:2,},scene);
        var sourcePlane = new BABYLON.Plane(0,0,1);
        sourcePlane.normalize();
        myplane.position.y = 3
        // 3-7 创建一个自定义的地面
        var myGround = BABYLON.MeshBuilder.CreateGround("myGround", { width: 6, height: 4, subdivsions: 4 }, scene)//化悲愤度暖白分成几块
        // 3-8 返回场景
        return scene;

    }
    // 4- 获取到创建的场景
    var scene = createScene();
    // 4-1 循环渲染,性能最大每秒60帧
    engine.runRenderLoop(function () {
        scene.render();
    })
    // 5- 浏览器大小变动时,触发引擎的重载状态
    window.addEventListener("resize", function () {
        engine.resize();
    })
    engine
</script>

</html>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值