DirectionalLight class
@author mr.doob / http://mrdoob.com/ @author alteredq / http://alteredqualia.com/
Ported to Dart from JS by: @author rob silverton / http://www.unwrong.com/ @author Nelson Silva
rev: r56
class DirectionalLight extends ShadowCaster { Vector3 position; Object3D target; num intensity, distance; num shadowCameraLeft, shadowCameraRight, shadowCameraTop, shadowCameraBottom; bool shadowCascade; Vector3 shadowCascadeOffset; num shadowCascadeCount; List shadowCascadeBias, shadowCascadeWidth, shadowCascadeHeight, shadowCascadeNearZ, shadowCascadeFarZ, shadowCascadeArray; DirectionalLight( num hex, [this.intensity = 1, this.distance = 0]) : super( hex ) { position = new Vector3( 0.0, 1.0, 0.0 ); target = new Object3D(); shadowCameraLeft = -500; shadowCameraRight = 500; shadowCameraTop = 500; shadowCameraBottom = -500; // shadowCascade = false; shadowCascadeOffset = new Vector3( 0.0, 0.0, -1000.0 ); shadowCascadeCount = 2; shadowCascadeBias = [ 0, 0, 0 ]; shadowCascadeWidth = [ 512, 512, 512 ]; shadowCascadeHeight = [ 512, 512, 512 ]; shadowCascadeNearZ = [ -1.000, 0.990, 0.998 ]; shadowCascadeFarZ = [ 0.990, 0.998, 1.000 ]; shadowCascadeArray = []; } }
Extends
Object3D > Light > ShadowCaster > DirectionalLight
Subclasses
Constructors
new DirectionalLight(num hex, [num intensity = 1, num distance = 0]) #
Creates a new Object instance.
Object instances have no meaningful state, and are only useful through their identity. An Object instance is equal to itself only.
docs inherited from Object
DirectionalLight( num hex, [this.intensity = 1, this.distance = 0]) : super( hex ) { position = new Vector3( 0.0, 1.0, 0.0 ); target = new Object3D(); shadowCameraLeft = -500; shadowCameraRight = 500; shadowCameraTop = 500; shadowCameraBottom = -500; // shadowCascade = false; shadowCascadeOffset = new Vector3( 0.0, 0.0, -1000.0 ); shadowCascadeCount = 2; shadowCascadeBias = [ 0, 0, 0 ]; shadowCascadeWidth = [ 512, 512, 512 ]; shadowCascadeHeight = [ 512, 512, 512 ]; shadowCascadeNearZ = [ -1.000, 0.990, 0.998 ]; shadowCascadeFarZ = [ 0.990, 0.998, 1.000 ]; shadowCascadeArray = []; }
Properties
bool frustumCulled #
inherited from Object3D
bool visible = false, castShadow = false, receiveShadow = false, frustumCulled = false
bool isDynamic #
inherited from Object3D
bool get isDynamic => _dynamic;
set isDynamic(bool flag) => _dynamic = flag;
Matrix4 matrixRotationWorld #
inherited from Object3D
Matrix4 matrix, matrixWorld, matrixRotationWorld
bool matrixWorldNeedsUpdate #
inherited from Object3D
bool matrixAutoUpdate = false, matrixWorldNeedsUpdate = false
bool receiveShadow #
inherited from Object3D
bool visible = false, castShadow = false, receiveShadow = false
bool rotationAutoUpdate #
inherited from Object3D
bool _dynamic, doubleSided, flipSided, rotationAutoUpdate
num shadowCameraBottom #
num shadowCameraLeft, shadowCameraRight, shadowCameraTop, shadowCameraBottom
num shadowCameraFov #
inherited from ShadowCaster
num shadowCameraNear, shadowCameraFar, shadowCameraFov
List shadowCascadeArray #
List shadowCascadeBias, shadowCascadeWidth, shadowCascadeHeight, shadowCascadeNearZ, shadowCascadeFarZ, shadowCascadeArray
List shadowCascadeFarZ #
List shadowCascadeBias, shadowCascadeWidth, shadowCascadeHeight, shadowCascadeNearZ, shadowCascadeFarZ
Operators
Methods
void add(Object3D object) #
inherited from Object3D
void add( Object3D object ) { if ( object == this ) { print( 'THREE.Object3D.add: An object can\'t be added as a child of itself.' ); return; } if ( object.parent != null ) { object.parent.remove( object ); } object.parent = this; children.add( object ); // add to scene Object3D scene = this; while ( scene.parent != null ) { scene = scene.parent; } if ( scene is Scene ) { scene.addObject( object ); } }
void applyMatrix(Matrix4 matrix) #
inherited from Object3D
void applyMatrix ( Matrix4 matrix ) { this.matrix = matrix * this.matrix; this.scale = getScaleFromMatrix( this.matrix ); Matrix4 mat = extractRotation(new Matrix4.identity(), this.matrix ); this.rotation = calcEulerFromRotationMatrix( mat, this.eulerOrder ); this.position = this.matrix.getTranslation(); }
Object3D getChildByName(String name, bool doRecurse) #
inherited from Object3D
Object3D getChildByName( String name, bool doRecurse ) { int c; int cl = children.length; Object3D child, recurseResult; children.forEach((child){ if ( child.name == name ) { return child; } if ( doRecurse ) { recurseResult = child.getChildByName( name, doRecurse ); if ( recurseResult != null ) { return recurseResult; } } }); return null; }
dynamic localToWorld(Vector3 vector) #
inherited from Object3D
localToWorld(Vector3 vector) => vector.applyProjection(matrixWorld);
void lookAt(Vector3 vector) #
inherited from Object3D
void lookAt( Vector3 vector ) { // TODO: Add hierarchy support. makeLookAt( matrix, vector, position, up ); if ( rotationAutoUpdate ) { if(useQuaternion) quaternion.setFromRotationMatrix(matrix); else rotation = calcEulerFromRotationMatrix( matrix, eulerOrder ); } }
void remove(Object3D object) #
inherited from Object3D
void remove( Object3D object ) { int index = children.indexOf( object ); if ( index != - 1 ){ object.parent = null; children.removeAt(index); // remove from scene Object3D scene = this; while ( scene.parent != null ) { scene = scene.parent; } if (scene is Scene ) { scene.removeObject( object ); } } }
void translate(num distance, Vector3 axis) #
inherited from Object3D
void translate( num distance, Vector3 axis ) { matrix.rotate3( axis ); axis.normalize(); position.add( axis.scale( distance ) ); }
void translateX(num distance) #
inherited from Object3D
void translateX( num distance ) => translate( distance, _vector.setValues( 1.0, 0.0, 0.0 ) );
void translateY(num distance) #
inherited from Object3D
void translateY( num distance ) => translate( distance, _vector.setValues( 0.0, 1.0, 0.0 ) );
void translateZ(num distance) #
inherited from Object3D
void translateZ( num distance ) => translate( distance, _vector.setValues( 0.0, 0.0, 1.0 ) );
void updateMatrix() #
inherited from Object3D
void updateMatrix() { if ( useQuaternion ) { setRotationFromQuaternion( matrix, quaternion ); } else { setRotationFromEuler( matrix, rotation, eulerOrder ); } matrix.setTranslation( position ); if ( scale.x != 1.0 || scale.y != 1.0 || scale.z != 1.0 ) { matrix.scale( scale ); boundRadiusScale = Math.max( scale.x, Math.max( scale.y, scale.z ) ); } matrixWorldNeedsUpdate = true; }
void updateMatrixWorld({bool force: false}) #
inherited from Object3D
void updateMatrixWorld( {bool force: false} ) { if (matrixAutoUpdate) updateMatrix(); // update matrixWorld if ( matrixWorldNeedsUpdate || force ) { if ( parent != null ) { matrixWorld = parent.matrixWorld * matrix; } else { matrixWorld = matrix.clone(); } matrixWorldNeedsUpdate = false; force = true; } // update children children.forEach((c) => c.updateMatrixWorld( force: force ) ); }