threejs实战_camera

简介: threejs的相机光影配置

正交投影相机

特点:看见物体的远近高低比例都是相同
就像maya中的三视图。
看一下鄙人以前做的一个简单模型伞。

  • 侧视图

image.png

  • 俯视图

image.png

正交投影构造函数OrthographicCamera

OrthographicCamera( left, right, top, bottom, near, far );

在这里插入图片描述
| 参数| 含义 |
|--|--|
| left | 左平面距离相机中心的垂直距离 |
right|右平面距离相机中心的垂直距离
top|顶平面距离相机中心的垂直距离
bottom|低平面距离相机中心的垂直位置
near|近平面距离相机中心的垂直位置
far|远平面距离相机中心的垂直距离
maya的顶视图相机,相机中心就是它的焦点位置。
image.png

透视相机

  • 透视图
    image.png

透视相机就像我们的人眼
image.png

透视投影相机的构造函数PerspectiveCamera

PerspectiveCamera(fov,aspect,near,far);
参数 含义
fov 视角

aspect|纵横比
near|近平面
far|原平面
maya的透视相机
image.png

THREE实战

前期的工作重构代码:

        <script>
        //场景的物体
        var cube=null,mesh=null,scene=null;
        function initObject() {
   
   
            var geometry = new THREE.CubeGeometry(300,300,300,);//正方体
            //白色反射所有光线,利于检测灯光
            var material = new THREE.MeshLambertMaterial( {
   
    color:0xFFFFFF} );//白色
            mesh = new THREE.Mesh( geometry,material);
            mesh.position = new THREE.Vector3(0,0,0);
            scene.add(mesh);
        }
        //灯光
        function initLight() {
   
   
            light_direction=new THREE.DirectionalLight(0x0000FF,1);//方向光蓝色
            light_direction.position.set(10,20,6);
        }
        //函数入口
        function threeStart() {
   
   
            initThree();
            initCamera();
            initScene();
            initLight();
            initObject();
            animation();
        }
        // 循环渲染
        function animation()
        {
   
   
            renderer.render(scene, camera);
            requestAnimationFrame(animation);//递归调用
        }
        </script>
<body onload="threeStart();">
<div id="canvas-frame"></div>
</body>

case1:正交投影相机的使用

相机中心视为原点,left与bottom为负值

        //正交投影相机
        function initCamera() {
   
   
        var camera;
        camera=new THREE.OrthographicCamera(-width/2,width/2,height/2,-height/2,1,1000);
        camera.position.x = 0;
        camera.position.y = 0;
        camera.position.z = 700;

        camera.up.x = 0;//相机朝向位置
        camera.up.y = 1;
        camera.up.z = 0;
        camera.lookAt(new THREE.Vector3(0,0,0));
        }

image.png

调整左侧距离left=-width时
image.png

case2:透视相机的使用

        //透视相机45视角,屏幕纵横比,1-1000的距离区间
        function initCamera() {
   
   
        var camera;
        camera = new THREE.PerspectiveCamera(45, width/height, 1, 1000);
        camera.position.x = 0;
        camera.position.y = 0;
        camera.up.x = 0;//相机朝向位置
        camera.up.y = 1;
        camera.up.z = 0;
        camera.lookAt(new THREE.Vector3(0,0,0));
        }

image.png

调整视角120度,视角0-180度之间看到的物体会越来越小
image.png

目录
相关文章
网页3D效果库Three.js学习[二]-了解照相机
camera 上篇大致了解了three.js ,并可以创建一个简单的可动的立方体。下来我们着重了解下camera (照相机),照相机其实就是视角,就像你的眼睛。Three.js有两种不同的相机模式:直角相机(OrthographicCamera)和透视相机(PerspectiveCamera),最好的方式去理解这两个照相机的不同是-用你的眼睛去观察它们。
987 0
|
存储 异构计算
threejs实战_3d纹理
threejs加载3d纹理
219 0
threejs实战_3d纹理
|
前端开发 JavaScript
threejs实战_canvans纹理
threejs加载canvas纹理
169 0
|
11天前
|
图形学
unity Camera第一人称移动
第一人称视角移动模拟通过检测用户键盘和鼠标输入,实现场景中的位置移动和视角旋转。位置移动基于W、A、S、D键控制相机前后左右移动,视角旋转通过鼠标控制上下左右观察,避免翻转并限制旋转角度。代码使用Unity的Input类和Transform方法实现这些功能,确保流畅的第一人称体验。
|
Android开发
[笔记]Android开发之相机开发 Camera1、2、X
[笔记]Android开发之相机开发 Camera1、2、X
115 0
|
9月前
|
XML 小程序 Java
【Android App】给三维魔方贴图以及旋转动画讲解和实战(附源码和演示视频 超详细必看)
【Android App】给三维魔方贴图以及旋转动画讲解和实战(附源码和演示视频 超详细必看)
184 0
|
9月前
|
XML 小程序 Java
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
166 0
|
前端开发 vr&ar
Threejs学习笔记 二
在我第一集的笔记中,我们实现了在react中创建简单三维模型,接下来,我们在此基础上学习材质贴图,并实现一个简单的vr看房。
Threejs学习笔记 二
Threejs学习笔记-三
精灵例子和精灵贴图的简单使用
Threejs学习笔记-三
|
8月前
|
图形学
【实现100个unity特效之2】使用shader和shader Graph实现2d图片描边效果(附源码)
【实现100个unity特效之2】使用shader和shader Graph实现2d图片描边效果(附源码)
487 0

热门文章

最新文章