ModelNode.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import Object3DNode from './Object3DNode.js';
  2. import { addNodeClass } from '../core/Node.js';
  3. import { nodeImmutable } from '../shadernode/ShaderNode.js';
  4. import { uniform } from '../core/UniformNode.js';
  5. import { Matrix4 } from 'three';
  6. class ModelNode extends Object3DNode {
  7. constructor( scope = ModelNode.VIEW_MATRIX ) {
  8. super( scope );
  9. }
  10. update( frame ) {
  11. this.object3d = frame.object;
  12. super.update( frame );
  13. }
  14. }
  15. export default ModelNode;
  16. export const modelDirection = nodeImmutable( ModelNode, ModelNode.DIRECTION );
  17. export const modelViewMatrix = nodeImmutable( ModelNode, ModelNode.VIEW_MATRIX ).label( 'modelViewMatrix' ).temp( 'ModelViewMatrix' );
  18. export const modelNormalMatrix = nodeImmutable( ModelNode, ModelNode.NORMAL_MATRIX );
  19. export const modelWorldMatrix = nodeImmutable( ModelNode, ModelNode.WORLD_MATRIX );
  20. export const modelPosition = nodeImmutable( ModelNode, ModelNode.POSITION );
  21. export const modelScale = nodeImmutable( ModelNode, ModelNode.SCALE );
  22. export const modelViewPosition = nodeImmutable( ModelNode, ModelNode.VIEW_POSITION );
  23. export const modelWorldMatrixInverse = uniform( new Matrix4() ).onObjectUpdate( ( { object }, self ) => self.value.copy( object.matrixWorld ).invert() );
  24. addNodeClass( 'ModelNode', ModelNode );