Three.js obj+mtl 불러오기(OBJLoader2)
3182 단어 threejs
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 );
});
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React Three Fiber에서 1인칭 움직임 만들기 - 2부시리즈를 계속 진행하면서 이 게시물에서는 이 프로젝트의 실제 코드를 볼 것입니다. 이 예에서는 특정 라이브러리 를 사용하여 물리학을 생성할 것입니다. 그런 다음 질량, 위치 등과 같은 물리 옵션을 설정해야 합니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.