Three.js obj+mtl 불러오기(OBJLoader2)

3182 단어 threejs
공식 사례: OBJLoader2 로드는 LoaderSupport를 가져와야 합니다.js、OBJLoader2.js、MTLLoader.js 방법 구현:
function addObjNew(objDef){// 
	var objLoader = new THREE.OBJLoader2();
	var callbackOnLoad = function ( event ) {
		model=event.detail.loaderRootNode;// 
		model.children.forEach(function(child) {	
   			       child.material.color = new THREE.Color( 0x666666 );					 					
   			       child.material.shininess = 4;					 					
   			       child.material.shading =THREE.SmoothShading;									
   			       child.material.alphaTest  = 0.1;								 			
   			       child.material.transparent  = true;		
   		    });
		setModelPosition(model);
		scene.add( model );
		addDragControls(model);
		console.log( " : "+ objDef.objName );
	};
	var onLoadMtl = function ( materials ) {
		objLoader.setModelName( objDef.objName );
		objLoader.setMaterials( materials );
		objLoader.setLogging( true, true );
		objLoader.load( objDef.objPath+objDef.objName, callbackOnLoad, null, null, null, false );
	};
	objLoader.loadMtl( objDef.mtlPath+objDef.mtlName, null, onLoadMtl );
}

전송된 매개 변수는obj 파일 경로 이름,obj 파일 이름,mtl 파일 경로 이름,mtl 파일 이름을 포함한다
메서드 호출:
addObjNew({//  
		objPath:"obj/t_shirt_1_Colorway_1/",
		objName:"t_shirt_1_Colorway_1.obj",
		mtlPath:"obj/t_shirt_1_Colorway_1/",
		mtlName:"t_shirt_1_Colorway_1.mtl"
	});

이 실현 방식은 98버전의threejs를 기반으로 브라우저 컨트롤러에서 THREE를 입력할 수 있습니다.REVISION 보기 셋.js 버전
만약 세 가지.js의 버전은 너무 낮습니다. 예를 들어 86, 다음과 같습니다.
function addObj2(objDef){// drc 

	model = new THREE.Object3D();
	model.name = 'model';
	scene.add( model );//obj 
	var mtlLoader = new THREE.MTLLoader();
	mtlLoader.setPath( objDef.texturePath );//mtl obj 
	mtlLoader.load( objDef.fileMtl, function( materials ) {//mtl 

	materials.preload();

	var objLoader = new THREE.OBJLoader2();
	objLoader.setSceneGraphBaseNode( model );
	objLoader.setMaterials( materials.materials );
	objLoader.setPath( objDef.path );//mtl obj 
	objLoader.setDebug( false, false );

	var onSuccess = function ( object3d ) {

		object3d.children.forEach(function(child) {	
				        child.material.color = new THREE.Color( 0x666666 );					 					
				        child.material.shininess = 4;					 					
				        child.material.shading =THREE.SmoothShading;									
				        child.material.alphaTest  = 0.1;								 			
				        child.material.transparent  = true;		
				   	});
		 console.log( 'Loading complete. Meshes were attached to: ' + object3d.name );
		 setModelPosition(object3d);// 
	};

    var onProgress = function ( event ) {
    		if ( event.lengthComputable ) {
    			var percentComplete = event.loaded / event.total * 100;
    			var output = 'Download of "' + objDef.fileObj + '": ' + Math.round( percentComplete ) + '%';
    			console.log(output);
    		}
    };

    var onError = function ( event ) {

    		console.error( 'Error of type "' + event.type + '" occurred when trying to load: ' + event.src );
    
    };

    objLoader.load( objDef.fileObj, onSuccess, onProgress, onError );
    });
				

}

좋은 웹페이지 즐겨찾기