threejs的基本属性

1.创建场景,摄像机,渲染器,几何体,材质,网格

网格 = 物体+材质

场景.add(网格),网格加入场景中

场景.add(坐标辅助器)

渲染 = 场景+摄像机

相机的轨道控制器是个单独的对象
在这里插入图片描述


import './style.css'
import * as THREE from 'three'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'

// 第一步,创建一个场景
const scene = new THREE.Scene()
const axesHelper = new THREE.AxesHelper(5)// 添加坐标辅助器,x红,y绿,z蓝,传入的数字表示轴的长度
scene.add(axesHelper)//加入场景中
// 第二步,创建一个透视相机.近大远小
const camera = new THREE.PerspectiveCamera(
    45,//视角,实现范围
    window.innerWidth / window.innerHeight,//摄像机的宽高比
    0.1,//相机最近能看的距离
    1000//相机最远能看到距离
)
// 第三步,创建渲染器
const renderer = new THREE.WebGLRenderer()
renderer.setSize(window.innerWidth, window.innerHeight)//徐渲染器的尺寸大小
document.body.appendChild(renderer.domElement) //renderer.domElement是canvas画布
// 第四步,创建几何体
const geometry = new THREE.BoxGeometry(1, 1, 1)
// 第五步,创建几何体的材质
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 })//设置十六进制的颜色
// 第六步 创建网格
const cube = new THREE.Mesh(geometry, material)//将物体和材质结合
// 第七步,将网格添加到场景中
scene.add(Cube)

// 第八步,设置摄像机的位置
camera.position.x = 5 //摄像机位置,即在三维坐标系中的哪个位置
camera.position.y = 5
camera.position.z = 5
camera.lookAt(0, 0, 0) //摄像机的朝向

const controls = new OrbitControls(camera, renderer.domElement)//添加轨道控制器
controls.enableDamping = true//打开惯性阻尼
controls.dampingFactor = 0.05//阻尼系数
controls.autoRotate = true //自动旋转,本质是摄像机围绕着物体旋转

// 第九步,渲染器渲染
renderer.render(scene, camera)//将场景和摄像机进行结合,即为渲染


// 第十步,渲染函数,让画面动起来
function animate() {
    controls.update()
    // cube.rotation.x += 0.01
    // cube.rotation.y += 0.01
    renderer.render(scene, camera)
    requestAnimationFrame(animate)// 下一帧,继续调用渲染函数
}


animate()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【重学C++】02 脱离指针陷阱:深入浅出 C++ 智能指针

前言 大家好,今天是【重学C】系列的第二讲,我们来聊聊C的智能指针。 为什么需要智能指针 在上一讲《01 C如何进行内存资源管理》中,提到了对于堆上的内存资源,需要我们手动分配和释放。管理这些资源是个技术活,一不…

新媒体运营十大能力,让品牌闻达天下!

" 现在新媒体蓬勃发展,很多品牌都有新媒体运营这个岗位。新媒体运营好的话,可以提高公司品牌曝光、影响力。那新媒体运营具备什么能力,才能让品牌知名度如虎添翼呢?" 信息收集能力 在移动互联网时代,信息的…

你应该用USB还是或耳机插孔连接你的电脑耳机?这里有详细解释

​如果你有一套有线耳机,可以通过USB连接或传统耳机插孔连接到电脑,你可能想知道使用这两个端口选项的实际区别。 使用耳机插孔 如果你使用传统的模拟电缆将耳机连接到计算机(或任何带耳机插孔的设备),则耳机的作用与…

英码科技算能系列边缘计算盒子再添新成员!搭载TPU处理器BM1688CV186AH,功耗更低、接口更丰富

在数据呈现指数级增长的今天,越来越多的领域和细分场景对实时、高效的数据处理和分析的需求日益增长,对智能算力的需求也不断增强。为应对新的市场趋势,英码科技凭借自身的硬件研发优势,携手算能相继推出了基于BM1684的边缘计算盒…

Google Earth Engine(GEE)深度学习入门教程-Python数据读入篇

Python数据读入篇 前置条件: GEE预处理影像导出保存为tfrecord的数据包,并下载到本地tensorflow的深度学习环境 本篇文章的目的主要是把Tfrecord格式的数据加载为tf可使用的数据集格式 设定超参数 首先需要设定导出时的波段名称和数据格式&#xff…

linux 排查java内存溢出(持续更新中)

场景 tone.jar 启动后内存溢出,假设pid 为48044 排查 1.确定java程序的pid(进程id) ps 或 jps 都可以 ps -ef | grep tone jps -l 2.查看堆栈信息 jmap -heap 48044 3.查看对象的实例数量显示前30 jmap -histo:live 48044 | head -n 30 4.查看线程状态 jstack 48044

于ThinkPHP开发的赛事报名小程序

基于ThinkPHP开发的赛事报名微信小程序 功能包括 1、参赛公告 2、会员中心(会员注册、登录、成绩查询、资料管理、参赛记录管理) 3、个人报名和企业报名 (身份证验证防止重复报名) 4、培训报名 5、查询是否在库人员,根…

深度学习之Pytorch框架垃圾分类智能识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着城市化进程的加快和人们环保意识的提高,垃圾分类已成为城市管理的重要一环。然而&am…

git拉取项目前需要操作哪些?

1.输入 $ ssh-keygen -t rsa -C "秘钥说明" 按enter键 2.出现 ssh/id_rsa:(输入也可以不输入也可以) 然后按enter键 3.出现empty for no passphrase:(输入也可以不输入也可以) 然后按enter键 4.出现same passphrase again: (输入也可以不输入也…

4. C++入门:内联函数、auto关键字、范围for及nullptr

内联函数 概念 以inline修饰的函数叫做内联函数,编译时C编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率 对比C的宏 C语言不足:宏 #define ADD(x, y) ((x)(y))int main() {int ret…

java中的HashSet类

一、HashSet类 实现了Set接口,无法存储重复元素 特点:元素位置无序、无索引、底层是HashMap 1、构造方法 内部是HashMap的构造方法 2、add方法 (1)元素在底层存储使用到了三种数据结构:hash数组、链表、树 (2)添加流程(根据…

arcgis 10.6 工具栏操作error 001143 后台服务器抛出异常

arcgis 10.6 工具栏操作error 001143 后台服务器抛出异常 环境 win10arcgis 10.6 问题 执行定义投影要素转线出现 Error: 001143:后台服务器抛出异常(差点重装10.6) 如下图所示: 解决方法 通过在菜单工具条上单击地理处理 > 地理处…

计算机网络学习小结_数据链路层

数据链路和帧 帧:数据链路层传输基本单元。链路层将网络层传过来的数据构成帧发到链路上,并将发到链路层的帧取出数据交给网络层 数据报/分组/包:网络层传输基本单元 三个基本问题 即封装成帧、透明传输、差错检测 封装成帧 概念&#…

尽微好物:从0到10亿+的抖音电商的TOP1“联盟团长”,如何使用NineData实现上云下云

杭州尽微供应链是抖⾳平台⽉均带货10E的TOP1“联盟团⻓”,是字节跳动⼀级代理商,巨量千川指定服务商,拥有商品库9万,是⾏业领先的电商供应链平台,达⼈陪跑机构。 杭州尽微供应链以天猫、京东抖音电商业务为依托&#x…

29.IO流(了解)

1. C语言的输入与输出 ​ C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键 盘)读取数据,并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。注意宽度输出和精度输出控制。C语言借助了相应的…

Python全栈自动化测试-Python基础08--循环结构-while

目录 前言 一、while循环 二、while条件 1.while条件--固定值 2.while条件-运算符 三、避免死循环 1.条件不为恒定值 2.条件为恒定值 2.1.避免死循环-continue 2.2.避免死循环-break 2.3.避免死循环-breakcontinue 总结 前言 在Python编程中,循环结构是…

安科瑞汽车充电桩防火限流式保护器灭弧保护

充电桩防火限流式保护器 短路过载保护 充电桩防火限流式保护器 短路过载保护可有效克服传统断路器、空气开关和监控设备存在的短路电流大、切断短路电流时间长、短路时产生的电弧火花大,以及使用寿命短等弊端,发生短路故障时,能以微秒级速度…

软件工程期末复习(5)可行性研究

可行性研究 可行性研究的任务 可行性研究的目的: 用最小的代价,在尽可能短的时间内确定问题是否能够解决。 可行性研究的实质: 就是一次压缩、简化了的系统分析和设计的过程。 可行性研究的路线: 分析和澄清问题定义&#…

​学者观察 | 从区块链应用创新看长安链发展——CCF区块链专委会荣誉主任斯雪明

导语 2024年1月27日,斯雪明教授在长安链发布三周年庆暨生态年会上发表演讲,认为在区块链发展过程中,不仅需要技术创新,同时需要有价值、有特色、有示范意义的应用创新。斯雪明教授介绍了国内区块链技术与应用发展的现状、趋势与挑…

1721jsp网上银行管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 网上银行管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,…