1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import NodeMaterial from './NodeMaterial.js';
- import LineBasicNodeMaterial from './LineBasicNodeMaterial.js';
- import MeshBasicNodeMaterial from './MeshBasicNodeMaterial.js';
- import MeshStandardNodeMaterial from './MeshStandardNodeMaterial.js';
- import PointsNodeMaterial from './PointsNodeMaterial.js';
- import { Material } from 'three';
- export {
- NodeMaterial,
- LineBasicNodeMaterial,
- MeshBasicNodeMaterial,
- MeshStandardNodeMaterial,
- PointsNodeMaterial
- };
- const materialLib = {
- NodeMaterial,
- LineBasicNodeMaterial,
- MeshBasicNodeMaterial,
- MeshStandardNodeMaterial,
- PointsNodeMaterial
- };
- const fromTypeFunction = Material.fromType;
- Material.fromType = function ( type ) {
- if ( materialLib[ type ] !== undefined ) {
- return new materialLib[ type ]();
- }
- return fromTypeFunction.call( this, type );
- };
- NodeMaterial.fromMaterial = function ( material ) {
- const type = material.type.replace( 'Material', 'NodeMaterial' );
- if ( materialLib[ type ] === undefined ) {
- return material; // is already a node material or cannot be converted
- }
- const nodeMaterial = new materialLib[ type ]( material );
- for ( let key in material ) {
- if ( nodeMaterial[ key ] === undefined ) {
- nodeMaterial[ key ] = material[ key ]; // currently this is needed only for material.alphaTest
- }
- }
- return nodeMaterial;
- };
|