20240428 1009
Tags:
Move objects
position
- possesses 3 essential properties, which are
x,y, andz - instance of the Vector3 class
Useful vector methods
vector length
console.log(mesh.position.length())
distance from another Vector3
console.log(mesh.position.distanceTo(camera.position))
normalise vector
console.log(mesh.position.normalize())
set x, y, z
mesh.position.set(0.7, - 0.6, 1)
Axes helper
- Display 3 lines corresponding to the
x,yandzaxes - each starts at the center of the scene and going in the corresponding direction
- 🟢
yaxis - 🔴
xaxis - 🔵
zaxis
/**
* Axes Helper
*/
const axesHelper = new THREE.AxesHelper(2) // length of line
scene.add(axesHelper)

Scale objects
scaleis also a Vector3- By default,
x,yandzare equal to1, meaning that the object has no scaling applied.
mesh.scale.x = 2
mesh.scale.y = 0.25
mesh.scale.z = 0.5

Rotate objects
TLDR
-
Handle by updating rotation or quaternion
-
Updating one will update another
Euler
-
also contains
x,y,z -
When you change the
x,y, andzproperties of a Euler, you can imagine putting a stick through your object's center in the axis's direction and then rotating that object on that stick. -
Expressed in radians
mesh.rotation.x = Math.PI * 0.25
mesh.rotation.y = Math.PI * 0.25

- changing one axis will affect another
- rotation applies in the following order:
x,y, and thenz - Can result in
gimbal lockwhen one axis has no more effect, all because of the previous ones - changing order of rotation
object.rotation.reorder('YXZ')
IMPORTANT
quaternion usually used because of ordering issues
Quaternion
- Expresss rotation in a mathematical way
lookAt(...)- lets you ask an object to look at something
- object will automatically rotate its
-zaxis toward the target you provided - Can use to rotate camera
- Parameter is the target and must be a Vector3
camera.lookAt(new THREE.Vector3(0, - 1, 0))

Combining transformations
position,rotation,quaternion,scalecan be combined in any order to give the same end result
mesh.position.x = 0.7
mesh.position.y = - 0.6
mesh.position.z = 1
mesh.scale.x = 2
mesh.scale.y = 0.25
mesh.scale.z = 0.5
mesh.rotation.x = Math.PI * 0.25
mesh.rotation.y = Math.PI * 0.25

Scene graph
- for objects that will be subject to similar actions
- Inherits from the Object3D class, it has access to the previously-mentioned properties and methods