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

目录
相关文章
|
数据可视化 定位技术
three.js实现烟雾缭绕效果
前言 大家好!我是Fly哥,最近接广告的接的有点多, 感谢大家还是一如既往的支持我!respect, 前几天我在朋友圈分享了一个烟雾缭绕的效果。很多小伙伴都表示非常感兴趣,有的同学说用到了噪声, 有的同学说用到了着色器,还有更过分说用到了ps, 胖虎竟然无语凝噎。其实都是就是简单的贴图。配合一点想象力。我们先看下效果: 然后我就发了一条朋友圈,问这个像什么?? 有的说 云层, 有的说云墨,有的说雾霭, 其实都不是, 我想做的是烟雾。好的话不不多说!, 本篇文章阅读大概5分钟。不耽误大家太多时间,主要是介绍思路, 说太多也没啥意义。如果你对three.js 还没有一点了解都没有,
three.js实现烟雾缭绕效果
Threejs实现相机视角切换,平滑过渡,点击模型切换到查看模型视角
Threejs实现相机视角切换,平滑过渡,点击模型切换到查看模型视角
2709 0
Threejs实现相机视角切换,平滑过渡,点击模型切换到查看模型视角
ThreeJs设置模型的边线
这篇文章介绍了如何在Three.js中为3D模型添加边线效果,并提供了实现这一功能的代码示例。
268 2
|
API
【threejs教程】场景视角切换的神器:轨道控制器
【8月更文挑战第5天】threejs教程:场景视角切换的神器,轨道控制器
903 1
【threejs教程】场景视角切换的神器:轨道控制器
|
机器学习/深度学习 人工智能 自然语言处理
音频基座大模型FunAudioLLM评测
通义语音团队最新开源了音频基座大模型FunAudioLLM,包含两大模型SenseVoice和CosyVoice。本文对这两种大模型进行整体的评测。
599 1
音频基座大模型FunAudioLLM评测
|
API
【threejs教程】threejs中的边边角角:几何体详解
【8月更文挑战第6天】threejs中的几何体详解
546 4
【threejs教程】threejs中的边边角角:几何体详解
Threejs用官方提供的编辑器做一个简单的模型
这篇文章介绍了如何使用Three.js内置的编辑器来创建和编辑简单的3D模型,并提供了相应的操作指南。
1326 1
|
数据可视化 物联网
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
1346 15
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
|
前端开发
了解 css中 backface-visibility 属性
了解 css中 backface-visibility 属性
206 0