-
Notifications
You must be signed in to change notification settings - Fork 0
Camera
let camera = new Bronze.Camera()rotationMatrix - only rotation camera matrix.
inversed - inversed camera matrix.
setFieldOfView(angle) - setting field of view for camera.
setPosition(x, y, z) - setting position for camera.
move(x, y, z) - setting moving camera.
setRotation(x, y, z) - setting rotation angels for camera. Methods takes three angles.
rotate(x, y, z) - rotate camera regarding current rotation.
setLookUp(x, y, angle) - makes the camera look at the coordinates and all transformation are relative of this point.
setControl(handler) - setting control function for moving camera.
setControls(handler) methods takes a function which will execute on every engine update. This function should transform camera like you want. It is good to use with Controls object. Here an example:
let controls = new Bronze.Controls(engine)
camera.setControl(() => {
// All coords
// let xt = this.rotationMatrix[0] * x + this.rotationMatrix[1] * y + this.rotationMatrix[2] * z + this.rotationMatrix[3]
// let yt = this.rotationMatrix[4] * x + this.rotationMatrix[5] * y + this.rotationMatrix[6] * z + this.rotationMatrix[7]
// let zt = this.rotationMatrix[8] * x + this.rotationMatrix[9] * y + this.rotationMatrix[10] * z + this.rotationMatrix[11]
if (controls.keys[87]) {
if (controls.keys[16]) {
camera.move(0, 10, 0) // Move up
} else {
// camera.move(camera.rotationMatrix[2] * -10, camera.rotationMatrix[6] * -10, camera.rotationMatrix[10] * -10)
camera.move(camera.rotationMatrix[2] * -10, 0, camera.rotationMatrix[10] * -10) // Moving forward.
}
}
if (controls.keys[83]) {
if (controls.keys[16]) {
camera.move(0, -10, 0) // Move down
} else {
// camera.move(camera.rotationMatrix[2] * 10, camera.rotationMatrix[6] * 10, camera.rotationMatrix[10] * 10)
camera.move(camera.rotationMatrix[2] * 10, 0, camera.rotationMatrix[10] * 10) // Move back
}
}
if (controls.keys[65]) {
camera.move(camera.rotationMatrix[0] * -10, camera.rotationMatrix[4] * -10, camera.rotationMatrix[8] * -10) // Move left
}
if (controls.keys[68]) {
camera.move(camera.rotationMatrix[0] * 10, camera.rotationMatrix[4] * 10, camera.rotationMatrix[8] * 10) // Move right
}
if (lastMousePosition == null) {
lastMousePosition = {
x: controls.mouse.x,
y: controls.mouse.y
}
}
if (controls.mouse.buttons[2]) {
if (engine.selectedObject != null) {
const object = engine.selectedObject
object.move((controls.mouse.x - lastMousePosition.x), -(controls.mouse.y - lastMousePosition.y), 0)
}
}
if (controls.mouse.buttons[0]) {
if (controls.keys[17]) {
camera.rotate(0, 0, ((controls.mouse.y - lastMousePosition.y) / 10))
} else {
camera.rotate((controls.mouse.y - lastMousePosition.y) / 10, (controls.mouse.x - lastMousePosition.x) / 10, 0)
}
}
lastMousePosition.x = controls.mouse.x
lastMousePosition.y = controls.mouse.y
})