2015-01-07 4 views
0

나는 three.js로 기본 애니메이션을 내보내고 사용하는 방법을 알아 내려고합니다. 믹서기에서 지오메트리를 만들고이를 JSON으로 내 보냅니다. 내가 three.js v 69를 사용하고 있기 때문에 THREE.animationHandler의 사용은 권장되지 않습니다. 라이브러리의 버전에 대한 작동 예제를 찾았지만 여기서는 three.js 라이브러리와 함께 제공되는 예제와 함께 제공되는 JSON에서만 작동합니다 (http://threejs.org/examples/models/skinned/knight.js). MY JSON 파일에이 오류가 출력됩니다 : TypeError: a is undefined three.min.js:682.블렌더 json 내보내기; "animation"missing

파일 사이에 구문 차이가 없습니다.

var loader = new THREE.JSONLoader(), 
    animatedMesh; 

loader.load('./123.json', function (geometry, materials) { 
    var originalMaterial = materials[ 0 ]; 
    originalMaterial.skinning = true; 
    animatedMesh = new THREE.SkinnedMesh(geometry, originalMaterial); 
    // Instantiate the animation 
    var animation = new THREE.Animation(
     animatedMesh, 
     geometry.animation 
    ); 
    animation.play(); 

}); 
scene.add(animatedMesh); 

나는 geometry.animation [0] 로더가 내 JSON을 사용할 때 제공 및 오류, 호출 기능에 첫번째 .hierarchy.lenght 확인합니다. knight.js를 사용할 때 올바른 수의 애니메이션을 얻습니다. 80

내가 테스트를 위해 내 보낸 JSON :

그것은 내 실수를했다
{ "metadata": { 
     "formatVersion" : 3.1, 
     "generatedBy" : "Blender 2.7 Exporter", 
     "vertices"  : 8, 
     "faces"   : 6, 
     "normals"  : 8, 
     "colors"  : 0, 
     "uvs"   : [], 
     "materials"  : 1, 
     "morphTargets" : 0, 
     "bones"   : 1 
    }, 

     "scale" : 1.000000, 

     "vertices" : [0.282971,-0.059365,-0.277163,0.278713,-0.0459321,0.283946,-0.282552,-0.0482188,0.279742,-0.278294,-0.0616519,-0.281367,0.268505,3.65467,-0.366188,0.264248,3.66811,0.194921,-0.297017,3.66582,0.190716,-0.29276,3.65239,-0.370392], 
     "faces" : [35,0,1,2,3,0,0,1,2,3,35,4,7,6,5,0,4,5,6,7,35,0,4,5,1,0,0,4,7,1,35,1,5,6,2,0,1,7,6,2,35,2,6,7,3,0,2,6,5,3,35,4,0,3,7,0,4,0,3,5], 
     "uvs"  : [], 
     "normals" : [0.583941,-0.588641,-0.559008,0.575182,-0.560991,0.595325,-0.579455,-0.565691,0.586657,-0.570696,-0.593341,-0.567644,0.579455,0.565691,-0.586657,-0.575182,0.560991,-0.595325,-0.583941,0.588641,0.559008,0.570696,0.593341,0.567644], 

     "skinIndices" : [0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1], 
     "skinWeights" : [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0], 
     "morphTargets" : [], 

     "bones"  : [{"parent":-1,"name":"Bone","pos":[0,0,-0],"rotq":[0.707107,0,-0,0.707107],"scl":[3.4158,3.4158,3.4158]}], 
     "animation" : [{"name":"ArmatureAction","fps":24,"length":1.625,"hierarchy":[{"parent":-1,"keys":[{"time":0,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.0416667,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.0833333,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.125,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.166667,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.208333,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.25,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.291667,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.333333,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.375,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.416667,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.458333,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.5,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.541667,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.583333,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.625,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.666667,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.708333,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.75,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.791667,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.833333,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.875,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.916667,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":0.958333,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.04167,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.08333,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.125,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.16667,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.20833,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.25,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.29167,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.33333,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.375,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.41667,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.45833,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.5,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.54167,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.58333,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]},{"time":1.625,"pos":[0,0,-0],"rot":[0.698582,-0.00125648,0.00407379,0.715517],"scl":[3.4158,3.4158,3.4158]}]}]}], 

     "colors" : [], 
     "materials" : [ 
      { 
       "DbgColor": 15658734, 
       "DbgIndex": 0, 
       "DbgName": "Material", 
       "blending": "NormalBlending", 
       "colorAmbient": [0.6400000190734865, 0.6400000190734865, 0.6400000190734865], 
       "colorDiffuse": [0.6400000190734865, 0.6400000190734865, 0.6400000190734865], 
       "colorEmissive": [0.0, 0.0, 0.0], 
       "colorSpecular": [0.5, 0.5, 0.5], 
       "depthTest": true, 
       "depthWrite": true, 
       "shading": "Lambert", 
       "specularCoef": 50, 
       "transparency": 1.0, 
       "transparent": false, 
       "vertexColors": false 
      }  ] } 
+0

질문에 소스 코드와 JSON을 포함하십시오. [어떤 주제에 관해서는 여기에서 질문 할 수 있습니까?] (http://stackoverflow.com/help/on-topic), [어떻게 좋은 질문을합니까?] (http://stackoverflow.com/help/how)를 참조하십시오. -to-ask) 및 [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve)을 참조하십시오. – Makyen

+0

** (JavaScript를 활성화하고 코드를 실행해야하는 페이지가 아닌) ** 및 ** 최소 JSON ** (1.267MB가 아님)에 소스 코드 **를 포함하십시오. [어떤 주제에 관해서는 여기에서 질문 할 수 있습니까?] (http://stackoverflow.com/help/on-topic), [어떻게 좋은 질문을합니까?] (http://stackoverflow.com/help/how)를 참조하십시오.), ** [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve) ** (MCVE). MCVE를 만드는 과정만으로 문제를 찾을 수 있습니다. – Makyen

+0

제 실수였습니다. 블렌더에서 JSON에 대한 올바른 내보내기를 수행 할 수있는 조건이 있습니다. 또한 일부 모델에서는 해당 애니메이션이 내 애니메이션에 포함됩니다. 올바른 코드는 다음과 같습니다. var animation = new THREE.Animation ( animatedMesh, geometry.animations [0] ); – Hulf

답변

0

, JSON에 대한 권리 수출을 할 블렌더에서 특정 조건이 있습니다. 또한 일부 모델에서는 해당 애니메이션이 내 애니메이션에 포함됩니다. 올바른 코드는 다음과 같습니다. var animation = new THREE.Animation (animatedMesh, geometry.animations [0]);

관련 문제