three.js从入门到精通系列教程002 - three.js正交相机OrthographicCamera

html 复制代码
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>three.js从入门到精通系列教程002 - three.js正交相机OrthographicCamera</title>
    <script src="ThreeJS/three.js"></script>
    <script src="ThreeJS/jquery.js"></script>
</head>

<body>
    <div id="myContainer"></div>
    <script>
        /*
        var renderer = new THREE.WebGLRenderer({ //创建渲染器对象
            // canvas: document.getElementById('can3d'), //渲染器绘制其输出的画布,
            alpha: false, // 画布是否包含alpha(透明度)缓冲区。默认值为false。
            premultipliedAlpha: true, //渲染器是否会假设颜色具有 预乘alpha。默认为true。
            antialias: true, //是否执行抗锯齿。默认值为false。
            preserveDrawingBuffer: true, //是否保留缓冲区直到手动清除或覆盖。默认值为false。
            depth: true, //绘图缓冲区是否具有至少16位的 深度缓冲区。默认为true。
            autoClear: true, //定义渲染器是否应在渲染帧之前自动清除其输出。
            //以上为基础配置选项。
            //以下为高级进阶调渲染后期
            gammaFactor: 0.5, //伽马基础值
            gammaInput: true, //如果设置,那么它期望所有纹理和颜色都是预乘伽马。默认值为false。
            gammaOutput: true, //如果设置,那么它期望所有纹理和颜色需要以预乘伽马输出。默认值为false。
            shadowMap: null, //如果使用,它包含阴影贴图的引用。
            physicalCorrectLights: true, //是否使用物理上正确的照明模式。默认值为false。
            toneMapping: 0.5, //曝光值
            toneMappingExposure: 1, //色调映射的曝光级别。默认值为1。
            renderLists: [], //在内部用于处理场景对象渲染的排序
            sortObjects: true //定义渲染器是否应对对象进行排序。默认为true。
        })

        */
        //创建渲染器  antialias是否执行抗锯齿。默认值为false。
        var myRenderer = new THREE.WebGLRenderer({ antialias: true });
        //设置渲染尺寸大小
        myRenderer.setSize(window.innerWidth, window.innerHeight);
        //设置渲染背景色
        myRenderer.setClearColor('white', 1.0);
        var myScene = new THREE.Scene();

        /*
            正投影相机-OrthographicCamera,通过正投影相机渲染出来的物体的尺寸都一样,不会因为观察距离的远近而出现近大远小的情况
            var camera = new THREE.OrthographicCamera( left,right,top,bottom,near,far)
            left	左边界:可渲染部分的左边界
            right	右边界:可渲染部分的右边界
            top	    上边界:可渲染部分的上边界
            bottom	下边界:可渲染部分的下边界
            near	近面:基于相机位置,表示从这里开始渲染场景;一般会设置一个很小的值,默认值0.1
            far	    远面:基于相机位置,表示停止渲染的位置;要注意设置合适的距离,保证场景全部可见,默认值1000     
        */
        //创建正交照相机
        var width = window.innerWidth;
        var height = window.innerHeight;
        var k = width / height;
        var s = 30;  //缩放比例
        var myCamera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 3000);
        myCamera.position.set(-1.66, 2.21, 18.1);
        myCamera.lookAt(myScene.position);

        //创建第一个立方体
        var myGeometry1 = new THREE.BoxGeometry(20, 20, 20);
        var myMaterial1 = new THREE.MeshNormalMaterial();
        var myMesh1 = new THREE.Mesh(myGeometry1, myMaterial1);
        //移动x轴位置
        myMesh1.translateX(-30);
        myScene.add(myMesh1);
        //更多源码 请点击下方链接下载
    </script>
</body>

</html>

正投影相机-OrthographicCamera,通过正投影相机渲染出来的物体的尺寸都一样,不会因为观察距离的远近而出现近大远小的情况

源码下载地址

three.js从入门到精通系列教程002 - three.js正交相机OrthographicCamera

相关推荐
mit6.8241 分钟前
[AI-video] 数据模型与架构 | LLM集成
开发语言·人工智能·python·微服务
hqxstudying2 分钟前
Java行为型模式---策略模式
java·开发语言·建造者模式·适配器模式·策略模式
蓝婷儿10 分钟前
Python 数据建模与分析项目实战预备 Day 4 - EDA(探索性数据分析)与可视化
开发语言·python·数据分析
爱Java&Java爱我13 分钟前
数组:从键盘上输入10个数,合法值为1、2或3,不是这三个数则为非法数字,试编辑统计每个整数和非法数字的个数
java·开发语言·算法
共享家952714 分钟前
linux-线程互斥
java·开发语言·jvm
KoiHeng15 分钟前
Java对象的比较
java·开发语言
Adolf_199327 分钟前
React 中 props 的最常用用法精选+useContext
前端·javascript·react.js
前端小趴菜0527 分钟前
react - 根据路由生成菜单
前端·javascript·react.js
喝拿铁写前端35 分钟前
`reduce` 究竟要不要用?到底什么时候才“值得”用?
前端·javascript·面试
空の鱼41 分钟前
js与vue基础学习
javascript·vue.js·学习