three.js小案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{margin:auto;
            overflow: hidden;
        }
    </style>
</head>
<script src='../libs/three.js'></script>
<script src="../libs/TrackballControls.js"></script>
<body>
  <div id='webgl'> 
    </div>
    <script>
        function init(){
            var renderer=new THREE.WebGLRenderer(45,window.innerWidth,window.innerHeight);
            var camera=new THREE.PerspectiveCamera(60,window.innerWidth/window.innerHeight,0.1,1000);
         
           
            var track=new THREE.TrackballControls(camera);
            //旋转速度
            track.rotateSpeed = 5;
        //变焦速度
        track.zoomSpeed = 3;
        //平移速度
        track.panSpeed = 0.8;
        //是否不变焦
        track.noZoom = false;
        //是否不平移
        track.noPan = false;
        //是否开启移动惯性
        track.staticMoving = false;
        //动态阻尼系数 就是灵敏度
        track.dynamicDampingFactor = 0.3;
        

            renderer.setSize(window.innerWidth,window.innerHeight);
            renderer.setClearColor(new THREE.Color(0x000000))
            renderer.shadowMapEnabled=true

            var scene=new THREE.Scene();
            //添加平面
            var planeGmometry=new THREE.PlaneBufferGeometry(70,70);
            var planeMaterial=new THREE.MeshPhongMaterial(0xc0c0c0);
            var plane=new THREE.Mesh(planeGmometry,planeMaterial);
            plane.rotation.x=-0.5*Math.PI
            plane.position.set(0,0,0);
            plane.receiveShadow=true;
            scene.add(plane);
            //添加聚光灯
            var sposLight=new THREE.SpotLight(0xffffff);
            sposLight.position.set(0,40,45);
            sposLight.castShadow=true
            scene.add(sposLight)

            //添加环境光
           var ambientLight=new THREE.AmbientLight(0x444444);
           scene.add(ambientLight)
            //添加球体
            var sphereGeometry=new THREE.SphereGeometry(10,50,50);
            var sphereMaterial=new THREE.MeshPhongMaterial({color:0xff3333});
            var sphere=new THREE.Mesh(sphereGeometry,sphereMaterial);
            sphere.position.set(15,10,0)
            scene.add(sphere);

            //添加正方体
            var boxGeometry=new THREE.BoxGeometry(10,10,10);
            var boxMaterial=new THREE.MeshPhongMaterial({color:new THREE.Color(0x00ff00)});
            var box=new THREE.Mesh(boxGeometry,boxMaterial);
            box.castShadow=true;
            box.position.set(-10,5,0);
            scene.add(box)


            camera.position.set(10,40,50);
            camera.lookAt(scene.position);
            renderer.render(scene,camera);
            document.getElementById('webgl').appendChild(renderer.domElement);

            requestAnimationFrame(render)
            function render(){
                renderer.render(scene,camera)

                track.update()
                requestAnimationFrame(render)
            }
            //监听窗口大小变化
            window.onresize=function(){
               
                camera.aspect=window.innerWidth/window.innerHeight;
                camera.updateProjectionMatrix();
                renderer.render(scene,camera)
                renderer.setSize(window.innerWidth,window.innerHeight);
               
            }

        }

window.onload=init
    </script>
</body>
</html>

当然,我可以给你介绍一些three.js的商用案例推荐。three.js是一个用于创建3D图形的JavaScript库,它在Web开发中被广泛应用于游戏开发、虚拟现实、建筑可视化等领域。以下是一些three.js的商用案例推荐: 1. A-Frame:A-Frame是一个基于three.js的WebVR框架,它可以用来创建虚拟现实和增强现实的应用。许多公司和组织都使用A-Frame来构建虚拟现实体验,例如Mozilla、Google等。 2. Sketchfab:Sketchfab是一个在线的3D模型共享平台,它使用了three.js来展示用户上传的3D模型。许多设计师和艺术家使用Sketchfab来展示他们的作品,同时也吸引了很多公司和机构使用该平台来展示产品和项目。 3. PlayCanvas:PlayCanvas是一个基于Web的游戏引擎,它使用了three.js作为底层渲染引擎。许多游戏开发者使用PlayCanvas来创建高性能的Web游戏,例如《贪吃蛇3D》、《坦克大战》等。 4. Archilogic:Archilogic是一个基于Web的建筑可视化平台,它使用了three.js来实现实时渲染和交互。Archilogic可以将建筑平面图转换为可交互的3D模型,帮助用户更好地理解和展示建筑设计。 5. Zygote Body:Zygote Body是一个基于Web的人体解剖学应用,它使用了three.js来呈现人体模型和解剖结构。用户可以通过Zygote Body来学习人体解剖学知识,该应用在医学教育和研究领域有广泛应用。 这些商用案例展示了three.js在不同领域的应用,从虚拟现实到游戏开发,从建筑可视化到医学教育。希望这些案例能够给你一些启发!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值