BufferGeometry
Object3D
Raycaster
Camera
CubeCamera
PerspectiveCamera
OrthographicCamera
StereoCamera
Clock
Curve
CurvePath
Path
Shape
ShapePath
ArrowHelper
AxesHelper
BoxHelper
Box3Helper
CameraHelper
DirectionalLightHelper
GridHelper
PolarGridHelper
HemisphereLightHelper
PlaneHelper
PointLightHelper
SkeletonHelper
SpotLightHelper
Light
PointLight
RectAreaLight
SpotLight
DirectionalLight
HemisphereLight
LightShadow
PointLightShadow
AnimationLoader
AudioLoader
BufferGeometryLoader
CompressedTextureLoader
CubeTextureLoader
DataTextureLoader
FileLoader
ImageBitmapLoader
ImageLoader
Loader
LoaderUtils
MaterialLoader
ObjectLoader
TextureLoader
LoadingManager
Material
Box2
Box3
Color
Cylindrical
Euler
Frustum
Interpolant
Line3
MathUtils
Matrix3
Matrix4
Plane
Quaternion
AnimationAction
AnimationClip
AnimationMixer
AnimationObjectGroup
AnimationUtils
keyframeTrack
PropertyBinding
PropertyMixer
BooleanKeyframeTrack
QuaternionKeyframeTrack
StringKeyframeTrack
Audio
AudioAnalyser
AudioContext
AudioListener
PositionalAudio

Object3D.clone()

该方法用于克隆一个 Object3D 对象,它会复制原始对象的所有属性,并返回一个新的 Object3D 实例。新的实例是原始对象的深层副本,即它也会克隆所有的子物体。

语法

Object3D.clone(recursive)

参数

  • recursive:可选参数,布尔值。如果设置为true,则会递归克隆子物体。默认值为 false

返回值

返回一个新的 Object3D 实例,它是原始对象的深层副本。

示例

var original = new THREE.Object3D();
original.position.set(10, 20, 30);
original.rotation.set(Math.PI / 2, -Math.PI / 4, 0);
original.scale.set(2, 2, 2);

var clone = original.clone();
console.log("Clone:", clone.position, clone.rotation, clone.scale);
// 输出:Clone: Vector3 {x: 10, y: 20, z: 30}
//       Euler {x: 1.5707963267948966, y: -0.7853981633974483, z: 0}
//       Vector3 {x: 2, y: 2, z: 2}

在上面的示例中,我们创建了一个 Object3D 实例 original,并设置了其属性。然后,我们调用 clone() 方法来克隆 original 实例,它返回新的 Object3D 实例 clone。最后,我们输出了 clone 实例的属性。可以看到,它们与 original 实例的属性相同。

注意事项

  • 在克隆时,如果设置了 recursive 参数为 true,则会递归克隆子物体。这可能会导致性能问题,因此需要谨慎使用。

参考链接