threejs 三维物体(Object3D)

news2024/12/21 20:07:04

这是Three.js中大部分对象的基类,提供了一系列的属性和方法来对三维空间中的物体进行操纵。
请注意,可以通过.add( object )方法来将对象进行组合,该方法将对象添加为子对象,但为此最好使用Group(来作为父对象)。

构造器

Object3D()

构造器中不带有参数。

属性

.animations : AnimationClip

Array with object's animation clips.

.castShadow : Boolean

对象是否被渲染到阴影贴图中。默认值为false

.children : Object3D

含有对象的子级的数组。请参阅Group来了解将手动对象进行分组的相关信息。

.customDepthMaterial : Material

渲染到深度贴图时此材质要使用的自定义深度材质。 当使用DirectionalLight或SpotLight进行阴影投射时,如果您正在(a)修改顶点着色器中的顶点位置, (b)使用位移贴图,(c)alphaTest中使用alpha贴图,或(d)alphaTest中使用透明纹理, 您必须指定customDepthMaterial以得到合适的阴影。默认值undefined

.customDistanceMaterial : Material

与customDepthMaterial相同,但与PointLight一起使用。默认值为undefined

.frustumCulled : Boolean

When this is set, it checks every frame if the object is in the frustum of the camera before rendering the object. If set to `false` the object gets rendered every frame even if it is not in the frustum of the camera. Default is `true`.

.id : Integer

只读 —— 表示该对象实例ID的唯一数字。

.layers : Layers

物体的层级关系。 物体只有和一个正在使用的Camera至少在同一个层时才可见。This property can also be used to filter out unwanted objects in ray-intersection tests when using Raycaster.

.matrix : Matrix4

局部变换矩阵。

.matrixAutoUpdate : Boolean

当这个属性设置了之后,它将计算每一帧的位移、旋转(四元变换)和缩放矩阵,并重新计算matrixWorld属性。默认值是Object3D.DefaultMatrixAutoUpdate (true)。

.matrixWorld : Matrix4

物体的世界变换。若这个Object3D没有父级,则它将和local transform .matrix(局部变换矩阵)相同。

.matrixWorldNeedsUpdate : Boolean

当这个属性设置了之后,它将计算在那一帧中的matrixWorld,并将这个值重置为false。默认值为false

.modelViewMatrix : Matrix4

这个值传递给着色器,用于计算物体的位置。

.name : String

对象的名称,可选、不必唯一。默认值是一个空字符串。

.normalMatrix : Matrix3

这个值传递给着色器,用于计算物体的光照。 它是物体的modelViewMatrix矩阵中,左上角3x3子矩阵的逆的转置矩阵。

使用这个特殊矩阵的原因,是只需使用modelViewMatrix就可以得出一个法线(缩放时)的非单位长度或者非垂直的方向(不规则缩放时)。

另一方面,modelViewMatrix矩阵中的位移部分和法线的计算无关,因此Matrix3就已经足够了。

.onAfterRender : Function

一个可选的回调函数,在Object3D渲染之后直接执行。 使用以下参数来调用此函数:renderer,scene,camera,geometry,material,group。

Please notice that this callback is only executed for renderable 3D objects. Meaning 3D objects which define their visual appearance with geometries and materials like instances of Mesh, Line, Points or Sprite. Instances of Object3D, Group or Bone are not renderable and thus this callback is not executed for such objects.

.onBeforeRender : Function

一个可选的回调函数,在Object3D渲染之前直接执行。 使用以下参数来调用此函数:renderer,scene,camera,geometry,material,group。

Please notice that this callback is only executed for renderable 3D objects. Meaning 3D objects which define their visual appearance with geometries and materials like instances of Mesh, Line, Points or Sprite. Instances of Object3D, Group or Bone are not renderable and thus this callback is not executed for such objects.

.parent : Object3D

在scene graph(场景图)中,一个对象的父级对象。 一个对象最多仅能有一个父级对象。

.position : Vector3

表示对象局部位置的Vector3。默认值为(0, 0, 0)。

.quaternion : Quaternion

表示对象局部旋转的Quaternion(四元数)。

.receiveShadow : Boolean

材质是否接收阴影。默认值为false

.renderOrder : Number

这个值将使得scene graph(场景图)中默认的的渲染顺序被覆盖, 即使不透明对象和透明对象保持独立顺序。 渲染顺序是由低到高来排序的,默认值为0

.rotation : Euler

物体的局部旋转,以弧度来表示。(请参阅Euler angles-欧拉角)

.scale : Vector3

物体的局部缩放。默认值是Vector3( 1, 1, 1 )。

.up : Vector3

这个属性由lookAt方法所使用,例如,来决定结果的朝向。 默认值是Object3D.DefaultUp,即( 0, 1, 0 )。

.userData : Object

一个用于存储Object3D自定义数据的对象。 它不应当包含对函数的引用,因为这些函数将不会被克隆。

.uuid : String

该对象实例的UUID。 这是一个自动生成的值,不应当对其进行修改。

.visible : Boolean

可见性。这个值为true时,物体将被渲染。默认值为true

静态属性

静态属性和方法由每个类所定义,并非由每个类的实例所定义。 也就是说,改变Object3D.DefaultUp或Object3D.DefaultMatrixAutoUpdate的值, 将改变每个在此之后由Object3D类(或派生类)创建的实例中的up和matrixAutoUpdate的值。(已经创建好的Object3D不会受到影响)。

.DefaultUp : Vector3

默认的物体的up方向,同时也作为DirectionalLight、HemisphereLight和Spotlight(自顶向下创建的灯光)的默认方向。 默认设为( 0, 1, 0 )。

.DefaultMatrixAutoUpdate : Boolean

matrixAutoUpdate的默认设置,用于新创建的Object3D。

方法

EventDispatcher 方法在这个类上是可用的。

.add ( object : Object3D, ... ) : null

添加对象到这个对象的子级,可以添加任意数量的对象。 当前传入的对象中的父级将在这里被移除,因为一个对象仅能有一个父级。

请参阅Group来查看手动编组对象的相关信息。

.applyMatrix4 ( matrix : Matrix4 ) : null

对当前物体应用这个变换矩阵,并更新物体的位置、旋转和缩放。

.applyQuaternion ( quaternion : Quaternion ) : Object3D

对当前物体应用由四元数所表示的变换。

.attach ( object : Object3D ) : this

object作为子级来添加到该对象中,同时保持该object的世界变换。

.clone ( recursive : Boolean ) : Object3D

recursive —— 如果值为true,则该物体的后代也会被克隆。默认值为true。

返回对象前物体的克隆(以及可选的所有后代)。

.copy ( object : Object3D, recursive : Boolean ) : this

recursive —— 如果值为true,则该物体的后代也会被复制。默认值为true。

复制给定的对象到这个对象中。 请注意,事件监听器和用户定义的回调函数(.onAfterRender 和 .onBeforeRender)不会被复制。

.getObjectById ( id : Integer ) : Object3D

id —— 标识该对象实例的唯一数字。

从该对象开始,搜索一个对象及其子级,返回第一个带有匹配id的子对象。
请注意,id是按照时间顺序来分配的:1、2、3、……,每增加一个新的对象就自增1。

.getObjectByName ( name : String ) : Object3D

name —— 用于来匹配子物体中Object3D.name属性的字符串。

从该对象开始,搜索一个对象及其子级,返回第一个带有匹配name的子对象。
请注意,大多数的对象中name默认是一个空字符串,要使用这个方法,你将需要手动地设置name属性。

.getObjectByProperty ( name : String, value : Any ) : Object3D

name —— 将要用于查找的属性的名称。
value —— 给定的属性的值。

从该对象开始,搜索一个对象及其子级,返回第一个给定的属性中包含有匹配的值的子对象。

.getWorldPosition ( target : Vector3 ) : Vector3

target — 结果将被复制到这个Vector3中。

返回一个表示该物体在世界空间中位置的矢量。

.getWorldQuaternion ( target : Quaternion ) : Quaternion

target — 结果将被复制到这个Quaternion中。

返回一个表示该物体在世界空间中旋转的四元数。

.getWorldScale ( target : Vector3 ) : Vector3

target — 结果将被复制到这个Vector3中。

返回一个包含着该物体在世界空间中各个轴向上所应用的缩放因数的矢量。

.getWorldDirection ( target : Vector3 ) : Vector3

target — 结果将被复制到这个Vector3中。

返回一个表示该物体在世界空间中Z轴正方向的矢量。

.localToWorld ( vector : Vector3 ) : Vector3

vector - 一个表示在该物体局部空间中位置的向量。

将该向量从物体的局部空间转换到世界空间。

.lookAt ( vector : Vector3 ) : null
.lookAt ( x : Float, y : Float, z : Float ) : null

vector - 一个表示世界空间中位置的向量。

也可以使用世界空间中x、y和z的位置分量。

旋转物体使其在世界空间中面朝一个点。

这一方法不支持其父级被旋转过或者被位移过的物体。

.raycast ( raycaster : Raycaster, intersects : Array ) : Array

抽象(空方法),在一条被投射出的射线与这个物体之间获得交点。 在一些子类,例如Mesh, Line, and Points实现了这个方法,以用于光线投射。

.remove ( object : Object3D, ... ) : null

从当前对象的子级中移除对象。可以移除任意数量的对象。

.removeFromParent () : this

Removes this object from its current parent.

.rotateOnAxis ( axis : Vector3, angle : Float ) : this

axis —— 一个在局部空间中的标准化向量。
angle —— 角度,以弧度来表示。

在局部空间中绕着该物体的轴来旋转一个物体,假设这个轴已被标准化。

.rotateOnWorldAxis ( axis : Vector3, angle : Float ) : this

axis -- 一个在世界空间中的标准化向量。
angle -- 角度,以弧度来表示。

在世界空间中绕着该物体的轴来旋转一个物体,假设这个轴已被标准化。 方法假设该物体没有旋转过的父级。

.rotateX ( rad : Float ) : this

rad - 将要旋转的角度(以弧度来表示)。

绕局部空间的X轴旋转这个物体。

.rotateY ( rad : Float ) : this

rad - 将要旋转的角度(以弧度来表示)。

绕局部空间的Y轴旋转这个物体。

.rotateZ ( rad : Float ) : this

rad - 将要旋转的角度(以弧度来表示)。

绕局部空间的Z轴旋转这个物体。

.setRotationFromAxisAngle ( axis : Vector3, angle : Float ) : null

axis -- 一个在局部空间中的标准化向量。
angle -- 角度(以弧度来表示)。

调用.quaternion中的setFromAxisAngle( axis, angle )。

.setRotationFromEuler ( euler : Euler ) : null

euler -- 指定了旋转量的欧拉角。
调用.quaternion中的setRotationFromEuler( euler)。

.setRotationFromMatrix ( m : Matrix4 ) : null

m -- 通过该矩阵中的旋转分量来旋转四元数。
调用.quaternion中的setFromRotationMatrix( m)。

请注意,这里假设m上的3x3矩阵是一个纯旋转矩阵(即未缩放的矩阵)。

.setRotationFromQuaternion ( q : Quaternion ) : null

q -- 标准化的四元数。

将所给的四元数复制到.quaternion中。

.toJSON ( meta : Object ) : Object

meta -- 包含有元数据的对象,例如该对象的材质、纹理或图片。 将对象转换为 three.js JSON Object/Scene format(three.js JSON 物体/场景格式)。

.translateOnAxis ( axis : Vector3, distance : Float ) : this

axis -- 一个在局部空间中的标准化向量。
distance -- 将要平移的距离。

在局部空间中沿着一条轴来平移物体,假设轴已被标准化。

.translateX ( distance : Float ) : this

沿着X轴将平移distance个单位。

.translateY ( distance : Float ) : this

沿着Y轴将平移distance个单位。

.translateZ ( distance : Float ) : this

沿着Z轴将平移distance个单位。

.traverse ( callback : Function ) : null

callback - 以一个object3D对象作为第一个参数的函数。

在对象以及后代中执行的回调函数。

.traverseVisible ( callback : Function ) : null

callback - 以一个object3D对象作为第一个参数的函数。

类似traverse函数,但在这里,回调函数仅对可见的对象执行,不可见对象的后代将不遍历。

.traverseAncestors ( callback : Function ) : null

callback - 以一个object3D对象作为第一个参数的函数。

在所有的祖先中执行回调函数。

.updateMatrix () : null

更新局部变换。

.updateMatrixWorld ( force : Boolean ) : null

更新物体及其后代的全局变换。

.updateWorldMatrix ( updateParents : Boolean, updateChildren : Boolean ) : null

updateParents - recursively updates global transform of ancestors.
updateChildren - recursively updates global transform of descendants.

Updates the global transform of the object.

.worldToLocal ( vector : Vector3 ) : Vector3

vector - 一个表示在世界空间中位置的向量。

将该向量从世界空间转换到物体的局部空间。

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

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

相关文章

AD之Layout设计规则

设计规则&#xff1a; 间距 线宽 过孔 铺铜 其他 1.添加类 这里建立了PWR类&#xff0c;与电源相关的网络 2.间距规则:6mil的成本低 3.线宽规则&#xff1a;PWR的优先级排第一&#xff0c;否则不起作用 4.过孔规则&#xff1a;8mil<大小<12mil 4.铺铜规则

音视频开发:FFmpeg库的使用

文章目录 一、FFmpeg的介绍二、FFmpeg的安装三、FFmpeg的使用1.ffplay&#xff1a;播放音视频2.ffprobe&#xff1a;查看视频信息3.ffmpeg&#xff1a;处理视频(1)格式转换(2)帮助 四、参考资料 一、FFmpeg的介绍 FFmpeg 是使用广泛的多媒体框架&#xff0c;是一个强大的音视频…

LeetCode讲解篇之740. 删除并获得点数

文章目录 题目描述题解思路题解代码题解链接 题目描述 题解思路 首先对于这题我们如果将所有点数装入一个切片f中&#xff0c;该切片f中的i号下标表示所有点数为i的点数之和 那么这题就转换成了打家劫舍这道题&#xff0c;也就是求选择了切片中某个下标的元素后&#xff0c;该…

观察者模式和发布-订阅模式的区别

观察者模式是&#xff0c;当被观察者的数据发生变化时&#xff0c;调用被观察者的 notify 方法&#xff0c;去通知所有观察者执行 update 方法进行更新&#xff1b; 对于发布-订阅模式&#xff0c;首先发布者与订阅者互相并不知道彼此的存在&#xff0c;他们是通过事件中心来进…

Element中el-table组件设置max-height右侧出现空白列的解决方法

之前就出现过这个情况&#xff0c;没理过&#xff0c;因为不影响啥除了不美观...但今天看着实在是难受&#xff0c;怎么都不顺眼(可能是我自己烦躁--) 试了很多网上的方法&#xff0c;都不得行&#xff0c;后面发现了这篇文章&#xff0c;解决了! 感谢&#xff01; Element中t…

微知-Mellanox 网卡和NVIDIA Bluefield DPU如何备份firmware?

某些场合需要从网卡或者DPU上读取网卡的firmware 备份命令&#xff1a; flint -d 06:00.0 ri 1.bin实操&#xff1a; 注意&#xff1a; 有些网卡不支持到处firmware

工具软件分享:11个免费的 android数据恢复应用程序功能分析

在手机上丢失数据是一个很大的错误。但是&#xff0c;在这种情况下&#xff0c;除了惊慌失措之外&#xff0c;最好开始使用android数据恢复应用程序搜索以查找将其取回的方法。您可以检查手机的备份存储以在Android上进行数据恢复&#xff0c;但是如果数据仍然无处可寻&#xf…

elementui时间选择器time-picker返回值不对的问题

1. 问题 天杀的elementui的time-picker&#xff0c;导致我开发的系统出现了一次生产问题&#xff0c;原因竟然是因为组件库的bug&#xff01;直接上截图。 如图&#xff0c;正常情况下&#xff0c;选择时间后&#xff0c;想要得到的值理应是当天的时间&#xff0c;如图是当年…

什么是AI网关?AI网关在企业系统中承担什么角色?

AI 大模型的发展正在推动各行业的增长&#xff0c;据有关报告显示&#xff1a;“未来十年内预计年均增长率将达到37.3%&#xff0c;全球企业预计在2027年之前将在AI领域投入8000亿美元"。这一迅猛发展促使许多企业进行战略转型&#xff0c;技术团队也需要调整其构建、运行…

牛客编程初学者入门训练——BC17 缩短二进制

BC17 缩短二进制 描述 我们处理的整数通常用十进制表示&#xff0c;在计算机内存中是以二进制补码形式存储&#xff0c;但通常二进制表示的整数比较长&#xff0c;为了便于在程序设计过程中理解和处理数据&#xff0c;通常采用八进制和十六进制&#xff0c;缩短了二进制补码表…

Spark高级用法-自定义函数

用户可以根据需求自己封装计算的逻辑&#xff0c;对字段数据进行计算 内置函数&#xff0c;是spark提供的对字段操作的方法 &#xff0c;split(字段) 对字段中的数进行切割&#xff0c;F.sum(字段) 会将该字段下的数据进行求和 实际业务中又能内置函数不满足计算需求&#xff0…

AI如何对产品设计带来更多的可能性?

AI(人工智能)对产品设计带来了广泛而深远的可能性&#xff0c;这些可能性主要体现在以下几个方面 1.创新设计的激发 创意生成:AI能够学习和模仿人类设计师的创作过程&#xff0c;通过深度学习等技术生成全新的、独特的设计概念。这些概念可能源于对大量设计案例的学习和分析&am…

AMD在Advancing AI发布会上发布三大核心硬件产品,挑战英伟达AI芯片市场

美国时间10月10日&#xff0c;AMD在旧金山召开了Advancing AI发布会。 这是老对手英伟达2024 AI Summit 结束后的第三天。与英伟达大会的不同之处在于&#xff0c;英伟达专注于软件方面的更新&#xff0c;而AMD主打“硬”牌。 这一次&#xff0c;他们带来了三款核心硬件产品&…

Python 批量转换 Shapefile 为 GeoJSON

批量转换 Shapefile (.shp) 为 GeoJSON 文件的脚本详解 &#x1f5fa;️&#x1f504; 在地理信息系统&#xff08;GIS&#xff09;和遥感领域&#xff0c;Shapefile&#xff08;.shp&#xff09;格式与GeoJSON格式是两种常用的数据格式。Shapefile 作为矢量数据的标准格式之一…

使用scss生成旋转圆圈

图片 html代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>…

直播相关04-录制麦克风声音, 通过编程录音

一 通过编程录音 开发录音功能的主要步骤是&#xff1a; 注册设备获取输入格式对象打开设备采集数据释放资源 需要用到的FFmpeg库有4个。 extern "C" { // 设备相关API #include <libavdevice/avdevice.h> // 格式相关API&#xff0c;也就是说&#xff0c;win…

Mysql(2)—SQL语法详解(通俗易懂)

一、关于SQL 1.1 简介 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于管理关系型数据库的标准编程语言。它主要用于数据的查询、插入、更新和删除等操作。SQL最初在1970年代由IBM的研究人员开发&#xff0c;旨在处理关系数据模型…

Python基础常见面试题总结

文章目录 1.深拷贝与浅拷贝2.迭代器3.生成器4.装饰器5.进程、线程、协程6.高阶函数7.魔法方法8.python垃圾回收机制 1.深拷贝与浅拷贝 浅拷贝是对地址的拷贝&#xff0c;只拷贝第一层&#xff0c;第一层改变的时候不会改变&#xff0c;内层改变才会改变。深拷贝是对值的拷贝&a…

【第十六周】回顾线性回归与逻辑回归以及它们的详细推导过程

目录 摘要Abstract1.线性回归1.1.一元线性回归1.1.1.函数凹凸性判断 1.2.多元线性回归1.3.进一步理解梯度下降法 2.逻辑回归2.1.信息论角度推导交叉熵损失函数2.2.概率论角度推导交叉熵损失函数 3.额外阅读&#xff1a;Label Smoothing3.1.One-hot 和 Label Smoothing 的优缺点…

解决报错:Invalid number of channels [PaErrorCode -9998]

继昨天重装了树莓派系统后&#xff0c;今天开始重新安装语音助手。在测试录音代码时遇到了报错“Invalid number of channels [PaErrorCode -9998]”&#xff0c;这是怎么回事&#xff1f; 有人说这是因为pyaudio没有安装成功造成的。于是&#xff0c;我pip3 install –upgrad…