0

私は THREE.js で最初のステップを実行しています。

今のところ、ここにあるサンプル ファイルを変更しようとしました: http://aerotwist.com/tutorials/getting-started-with-three-js/

このファイルは、3 つのシーンを作成し、球体とポイント ライトを追加します。

私の問題は次のとおりです。ブレンダー2.63を使用して作成し、ブレンダー2.63エクスポーターを使用してエクスポートしたモデルで球を置き換える方法がわかりません。

私の構文はどういうわけか間違っていると思います。

以下は私のコードです。Blender モデルをステージに表示するには何を変更すればよいか教えてもらえますか?

どうも。

<head>
    <meta charset="utf-8" />
    <title>Sample Three.js</title>
    <link rel="stylesheet" href="js/Styles.css" />
</head>
<body>

    <div id="container">
    </div>

</body>
<script src="js/Stats.js"></script>
<script src="js/Three.js"></script>
<script>

var WIDTH = 700,
    HEIGHT = 600;


var VIEW_ANGLE = 45,
    ASPECT = WIDTH / HEIGHT,
    NEAR = 0.1,
    FAR = 10000;

var container = window.document.getElementById('container');


var renderer = new THREE.WebGLRenderer();
var camera = new THREE.PerspectiveCamera(  VIEW_ANGLE,
                                ASPECT,
                                NEAR,
                                FAR  );
var scene = new THREE.Scene();


camera.position.z = 300;


renderer.setSize(WIDTH, HEIGHT);


container.appendChild(renderer.domElement);


var sphereMaterial = new THREE.MeshLambertMaterial(
{
    color: 0xCC0000
});


//var radius = 50, segments = 16, rings = 16;

var loader = new THREE.JSONLoader();

loader.load( 'js/ModelTest.js', function ( geometry ) {
    mesh = new THREE.Mesh( geometry, sphereMaterial );
    scene.add( mesh );
    mesh.position.x = 0;
    mesh.position.y = 0;
    mesh.position.z = 0;
alert(mesh.geometry.vertices.length)
} );

//var sphere = new THREE.Mesh(
//new THREE.SphereGeometry(radius, segments, rings),sphereMaterial);

//scene.add(sphere);

scene.add(camera);

var pointLight = new THREE.PointLight( 0xFFFFFF );

pointLight.position.x = 10;
pointLight.position.y = 50;
pointLight.position.z = 130;

scene.add(pointLight);

renderer.render(scene, camera);

</script>
4

2 に答える 2

1

ばかげた答えかもしれませんが、私は同じ問題を抱えていて、オブジェクトのスケーリングを解決しました。mesh.position.z = 0の後に、コールバック関数を追加してみてください。

mesh.scale.x = mesh.scale.y = mesh.scale.z = 200;

私にとってはうまくいきました。

お役に立てば幸いです。ピエトロ

于 2012-07-21T10:55:25.657 に答える
0

実際の例がなければ、知るのは難しいです...

読み込みは非同期で行われています。render() 呼び出しをローダー コールバック関数の最後の行に移動します。(アラートコールを置き換えます)。

モデルが見えるように、カメラがモデルに十分近いことを確認してください。

camera.lookAt( scene.position )移動した後、カメラが原点を見ていることを確認します。

于 2012-07-18T14:18:48.073 に答える