1

Up and runningという本に基づいて独自のバージョンのプラネタリウムを作ろうとしていますが、スカイボックスを作ろうとすると問題が発生します。

Chrome を使用していますが、javascript コンソールで、マテリアルが定義されている行に「Uncaught TypeError: undefined is not a function」というエラーが表示されます。

いくつかのライブラリがありませんか? それとも、three.js の変更ですか? r55を使用しています。コードは次のとおりです。

ありがとうございました!

var urlPrefix   = "images/skybox/";
var urls = [ 
urlPrefix + "skyboxmid.jpg", urlPrefix + "skyboxback.jpg",
urlPrefix + "skyboxleft.jpg", urlPrefix + "skyboxfront.jpg",
urlPrefix + "skyboxright.jpg", urlPrefix + "skyboxtop.jpg" ];

var textureCube = THREE.ImageUtils.loadTextureCube( urls );
var shader  = THREE.ShaderLib['normalmap'];
shader.uniforms["tNormal"].texture = textureCube;
var material = new THREE.MeshShaderMaterial({
    fragmentShader  : shader.fragmentShader,
    vertexShader    : shader.vertexShader,
    uniforms    : shader.uniforms
});

skybox  = new THREE.Mesh( new THREE.CubeGeometry( 100000, 100000, 100000, 1, 1, 1, null, true ), material );
scene.addObject( skybox ); 
4

1 に答える 1

10

今です

new THREE.ShaderMaterial()

shader.uniforms["tNormal"].value = textureCube;

使用しているUp and Runningブックは古くなっています。

代わりに、three.js の例のディレクトリを検索してください。スカイボックスを作成する方法は他にもあります。

three.js r.55

于 2013-02-08T16:08:20.697 に答える