2016-12-20 14 views
0

私はthree.jsをやっています。私はTHREE.jsにJSONファイルをロードしました。私のJSONファイルはclara.ioの犬です。すべてうまく動作し、問題は3Dモデルが大きすぎます。画面に表示されるサイズを小さくする方法はありますか?three.js - jsonモデルが画面上で大きすぎます

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <title>three.js webgl - loaders - JSON loader</title> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> 
     <style> 
      body { 
       font-family: Monospace; 
       background-color: #000; 
       color: #fff; 
       margin: 0px; 
       overflow: hidden; 
      } 
      #info { 
       color: #fff; 
       position: absolute; 
       top: 10px; 
       width: 100%; 
       text-align: center; 
       z-index: 100; 
       display:block; 
      } 
      #info a, .button { color: #f00; font-weight: bold; text-decoration: underline; cursor: pointer } 
     </style> 
    </head> 

    <body> 

     <script src="three.js"></script> 

     <script src="Detector.js"></script> 
     <script src="stats.min.js"></script> 

     <script> 
      var container, stats; 
      var camera, scene, renderer; 
      var mouseX = 0, mouseY = 0; 
      var windowHalfX = window.innerWidth/2; 
      var windowHalfY = window.innerHeight/2; 
      init(); 
      animate(); 
      function init() { 
       container = document.createElement('div'); 
       document.body.appendChild(container); 
       camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 1, 2000); 
       camera.position.z = 4; 
       // scene 
       scene = new THREE.Scene(); 
       var ambient = new THREE.AmbientLight(0x444444); 
       scene.add(ambient); 
       var directionalLight = new THREE.DirectionalLight(0xffeedd); 
       directionalLight.position.set(0, 0, 1).normalize(); 
       scene.add(directionalLight); 
       // BEGIN Clara.io JSON loader code 
       var objectLoader = new THREE.ObjectLoader(); 
       objectLoader.load("blue-dog.json", function (obj) { 
        scene.add(obj); 
       }); 
       // END Clara.io JSON loader code 
       renderer = new THREE.WebGLRenderer(); 
       renderer.setPixelRatio(window.devicePixelRatio); 
       renderer.setSize(window.innerWidth, window.innerHeight); 
       container.appendChild(renderer.domElement); 
       document.addEventListener('mousemove', onDocumentMouseMove, false); 
       // 
       window.addEventListener('resize', onWindowResize, false); 
      } 
      function onWindowResize() { 
       windowHalfX = window.innerWidth/2; 
       windowHalfY = window.innerHeight/2; 
       camera.aspect = window.innerWidth/window.innerHeight; 
       camera.updateProjectionMatrix(); 
       renderer.setSize(window.innerWidth, window.innerHeight); 
      } 
      function onDocumentMouseMove(event) { 
       mouseX = (event.clientX - windowHalfX)/2; 
       mouseY = (event.clientY - windowHalfY)/2; 
      } 
      // 
      function animate() { 
       requestAnimationFrame(animate); 
       render(); 
      } 
      function render() { 
       camera.position.x += (mouseX - camera.position.x) * .05; 
       camera.position.y += (- mouseY - camera.position.y) * .05; 
       camera.lookAt(scene.position); 
       renderer.render(scene, camera); 
      } 
     </script> 

    </body> 
</html> 

誰でも助けていただければ幸いです、ありがとうと思います。私はWAMPでもそれをホストしています。 JSONファイルがで貼り付ける大きなにある

+0

カメラをもっと遠くに動かす=モデルが小さくなる – 2pha

答えて

1

あなたのオブジェクトの縮尺を設定することができ、次のいずれか。

objectLoader.load("blue-dog.json", function(obj){ 
    obj.scale.set(.5, .5, .5); 
    scene.add(obj); 
}); 

したり、カメラをズームアウトしますが、私ので、正直に言うと、私はあなたの例を与えることはできませんカメラに関して何をしようとしているのかを100%確信していません(あなたのレンダリング機能では奇妙な+ = = =私はちょっと混乱します)。

camera.position.multiplyScalar(2); 
// This should double the distance between your camera and the center of the scene 

を一度だけ、それを試してみてください(あなたのレンダリングループでこれを繰り返した場合、それは永遠に、ズームアウトし、それはかなり早く起こる):あなたはこれを試みることができます。

+0

残念ながら、スケールを設定するにはどうすればいいですか? – shaneo

+1

@shaneoすみませんが、これを誤って投稿した可能性があります。 'Mesh.scale.set(x、y、z)'(あなたの場合、ロードされた 'object'は' Mesh'です)にメッシュのスケールを設定します。 – somethinghere

+0

ありがとう、私のレンダリング機能で言及したことは、マウスでオブジェクトをアニメーション化することだと思います。私はthree.jsの例を使ってjsonモデルを読み込む方法を見ました。私はそれを動作させることができませんでした。オブジェクトを回転させる方法もありますか?私はそれを90度回転させたい – shaneo

関連する問題