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

news2024/9/24 9:18:57
<!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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1397658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LLMs之Vanna:Vanna(利用自然语言查询数据库的SQL工具+底层基于RAG)的简介、安装、使用方法之详细攻略

LLMs之Vanna&#xff1a;Vanna(利用自然语言查询数据库的SQL工具底层基于RAG)的简介、安装、使用方法之详细攻略 目录 Vanna的简介 1、用户界面 2、RAG vs. Fine-Tuning 3、为什么选择Vanna&#xff1f; 4、扩展Vanna Vanna的安装和使用方法 1、安装 2、训练 (1)、使用…

IPv6--ACL6(IPv6访问控制列表--基本ACL6配置)

ACL基本原理 ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。 ACL的组成 ACL编号: 在网络设备上配置ACL时,每个ACL都需要分配一个编号,称为ACL编号,用来标识ACL。不同分类的ACL编号范围不同,这个后面具体讲。 规则: 前面提到了,一个AC…

vectorCast——Probe point 功能实现故障注入,局部变量打印,断点调试。

选择一个测试用例,选择coverage窗口进行查看。点击edit probe point,如图所示绿色的小圆圈。选代码中选择需要打断点的地方进行点击。黑色的小圆点都可以选。点击黑色小圆点,小圆点变绿,表示打断点成功。此时就可以根据自己的需求在打断点的位置编写一些C语言的命令语句。点…

C语言之编译和链接

C语言之编译和链接 文章目录 C语言之编译和链接翻译环境和运行环境1 翻译环境编译1.1.1 预处理&#xff08;预编译&#xff09;1.1.2 编译第一步&#xff1a;词法分析第二步&#xff1a;语法分析第三步&#xff1a;语义分析 1.1.3 汇编 链接 2. 运行环境 翻译环境和运行环境 在…

Autosar信息安全入门系列01-SecOC基础介绍

本文框架 1. 概述2. SecOC基本概念2.1 SecOC是什么&#xff1f;2.2 新鲜度值与MAC值2.3 SecOC报文格式 3. SecOC报文发送及接收逻辑3.1 SecOC报文的发送3.2 SecOC报文的接收 1. 概述 本文为Autosar通信入门系列介绍&#xff0c;如您对AutosarMCAL配置&#xff0c;通信&#xf…

Vue中的日历组件 Calendar 实现 考勤打卡记录

日历组件 Calendar 可以自定义在页面添加内容。 实现效果图 1.由于Calendar没有右上角月份切换的API事件&#xff0c;可以给组件源码添加自定义添加一个事件 2.也可以通过自带的input事件来获取日历 3.vue页面完整代码 注释&#xff1a;this.$m(this.beginTime).format(…

linux C语言socket函数recv

recv 函数是在 Linux C 语言网络编程中用于从已连接的套接字接收数据的函数。它通常与 TCP 连接一起使用&#xff0c;但也可以用于 UDP&#xff08;尽管对于 UDP&#xff0c;更常使用 recvfrom&#xff0c;因为它还可以接收发送方的地址信息&#xff09;。 函数原型 recv 函数…

【漏洞复现】Hikvision SPON IP网络对讲广播系统命令执行漏洞(CVE-2023-6895)

文章目录 前言声明一、系统简介二、漏洞描述三、影响版本四、漏洞复现五、修复建议 前言 Hikvision Intercom Broadcasting System是中国海康威视&#xff08;Hikvision&#xff09;公司的一个对讲广播系统。 声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播…

在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter

在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter 0. 背景1. 安装 docker-ce2. 安装 NVIDIA Container Toolkit3. 使用 nvidia-ctk 命令配置容器运行4. 通过 docker 运行 nvidia-smi5. 运行 gpu-jupyter6. 访问 gpu-jupyter7. 测试 gpu-jupyter 是否可以访问 cuda 0. 背景 今天突…

每日OJ题_算法_滑动窗口⑤_力扣904水果成篮

目录 力扣904. 水果成篮 解析及代码1&#xff08;使用容器&#xff09; 解析及代码2&#xff08;开数组&#xff09; 力扣904. 水果成篮 904. 水果成篮 - 力扣&#xff08;LeetCode&#xff09; 难度 中等 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这…

stable-diffusion-webui 安装与运行

大家好&#xff0c;我是水滴~~ 本文主要介绍在各种显卡环境中&#xff0c;如何安装和运行 stable-diffusion-webui&#xff0c;包括&#xff1a;在 NVIDIA 显卡环境上安装、在 AMD 显卡环境上安装、在集显或小于 4G 显卡环境上安装。 文章目录 在 NVIDIA 显卡环境上安装下载配…

如何在业务代码中优雅使用责任链模式

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;为请求创建了一个接收者对象的链。这种模式给予请求的类型&#xff0c;对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中&#xff0c;通常每个接收者都包含对另一个接收者…

LLM:RoPE位置编码

论文&#xff1a;https://arxiv.org/pdf/2104.09864.pdf 代码&#xff1a;https://github.com/ZhuiyiTechnology/roformer 发表&#xff1a;2021 绝对位置编码&#xff1a;其常规做法是将位置信息直接加入到输入中&#xff08;在x中注入绝对位置信息&#xff09;。即在计算 q…

mysql原理--锁

1.解决并发事务带来问题的两种基本方式 上一章唠叨了事务并发执行时可能带来的各种问题&#xff0c;并发事务访问相同记录的情况大致可以划分为3种&#xff1a; (1). 读-读 情况&#xff1a;即并发事务相继读取相同的记录。 读取操作本身不会对记录有一毛钱影响&#xff0c;并不…

爬虫笔记(一):实战登录古诗文网站

需求&#xff1a;登录古诗文网站&#xff0c;账号&#xff0b;密码&#xff0b;图形验证码 第一&#xff1a;自己注册一个账号&#xff0b;密码哈 第二&#xff1a;图形验证码&#xff0c;需要一个打码平台&#xff08;充钱&#xff0c;超能力power&#xff01;&#xff09;或…

“GPC爬虫池有用吗?

作为光算科技的独有技术&#xff0c;在深入研究谷歌爬虫推出的一种吸引谷歌爬虫的手段 要知道GPC爬虫池是否有用&#xff0c;就要知道谷歌爬虫这一概念&#xff0c;谷歌作为一个搜索引擎&#xff0c;里面有成百上千亿个网站&#xff0c;对于里面的网站内容&#xff0c;自然不可…

网络爬虫采集工具

在当今数字化的时代&#xff0c;获取海量数据对于企业、学术界和个人都至关重要。网络爬虫成为一种强大的工具&#xff0c;能够从互联网上抓取并提取所需的信息。本文将专心分享关于网络爬虫采集数据的全面指南&#xff0c;深入探讨其原理、应用场景以及使用过程中可能遇到的挑…

php array_diff 比较两个数组bug避坑 深入了解

今天实用array_diff出现的异常问题&#xff0c;预想的结果应该是返回 "integral_initiate">"0"&#xff0c;实际没有 先看测试代码&#xff1a; $a ["user_name">"测","see_num">0,"integral_initiate&quo…

leetCode-42.接雨水

&#x1f4d1;前言 本文主要是【算法】——算法模拟的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#xff…

Go语言基础快速上手

1、Go语言关键字 2、Go数据类型 3、特殊的操作 3.1、iota关键字 Go中没有明确意思上的enum&#xff08;枚举&#xff09;定义&#xff0c;不过可以借用iota标识符实现一组自增常亮值来实现枚举类型。 const (a iota // 0b // 1c 100 // 100d // 100 (与上一…