2012-04-18 24 views
0

テクスチャが表示されないスレッドがいくつかあります。私はそれらすべてを試みたが、何も助けなかった。Three.jsが球面のテクスチャを表示しない

私はこれで数時間を費やしました。私が黒い球を見ると終わるたびに。

私はChrome v18とWindows 7に取り組んでいます。私もFirefoxを試しましたが、このブラウザは実際にThree.jsをサポートしていません。

これは、スクリプトの本体です:

<body> 

    <script src="../build/Three.js"></script> 

    <script src="js/Stats.js"></script> 
    <script src="../build/jquery-1.7.2.min.js"></script> 

これは、スクリプト自体である:

// stap1) camera, set the scene size 
    var WIDTH = 400, 
     HEIGHT = 300; 

    // set some camera attributes 
    var VIEW_ANGLE = 45, 
     ASPECT = WIDTH/HEIGHT, 
     NEAR = 0.1, 
     FAR = 10000; 

    var camera = new THREE.PerspectiveCamera( 
       VIEW_ANGLE, 
      ASPECT, 
      NEAR, 
      FAR ); 
// stap2) scene:     
    var scene = new THREE.Scene(); 
    // the camera starts at 0,0,0 so pull it back 
    scene.add(camera); 
    camera.position.z = +300; 
    // get the DOM element to attach to 
    // - assume we've got jQuery to hand 
    var container = $('#container'); 

    // stap3)create a WebGL renderer: 
    var renderer = new THREE.WebGLRenderer(); 
    // start the renderer 
    renderer.setSize(WIDTH, HEIGHT); 
    // attach the render-supplied DOM element 
    container.append(renderer.domElement); 

    // bol maken: 
    // create the sphere's material 
    // b.v: THREE.MeshBasicMaterial 
    var sphereMaterial = new THREE.MeshLambertMaterial(
    { 
     map: THREE.ImageUtils.loadTexture("http://dev.root.nl/tree/examples/textures/ash_uvgrid01.jpg") 
    }); 

    // set up the sphere vars 
    var radius = 50, segments = 16, rings = 16; 
    var sphereGeometry = new THREE.SphereGeometry(radius, segments, rings); 
    // create a new mesh with sphere geometry - 
    var sphere = new THREE.Mesh(
     sphereGeometry, 
     sphereMaterial 
     ); 

    sphere.position.x=0; 
    var s=1; 
    sphere.scale.set(s, s, s); 

    // add the sphere to the scene 
    scene.add(sphere); 
    // create a point light 
    var pointLight = new THREE.PointLight(0xFFFFFF); 
    // set its position 
    pointLight.position.x = 10; 
    pointLight.position.y = 50; 
    pointLight.position.z = 130; 
    // add to the scene 
    scene.add(pointLight); 
    // draw! 
    renderer.render(scene, camera); 

答えて

4

あなたがテクスチャとして使用するイメージが完全にダウンロードされるまで待つ必要があります。

私はウェブ上であなたのコードを入れている:http://jsfiddle.net/4Qg7K/とだけは、古典的には、「ループをレンダリング」を追加しました:

requestAnimationFrame(render); 

function render(){ 
    requestAnimationFrame(render); 

    sphere.rotation.y += 0.005; //rotation stuff, just for fun 

    renderer.render(scene, camera); 
}; 

​​機能がrender機能にブラウザがする準備ができているたびに呼び出し、タイマーのように動作しますWebページを更新します。

ところで、Three.jsはFirefoxでうまく動作します。

関連する問題