4

WebGLDeferredRendererSSAO を実装しやすいので、最近シーンを を使用するように変換しました。ただし、遅延レンダラーに変換してから、THREE.Lineオブジェクトをレンダリングできません。代わりに、次のエラーが表示されます。

THREE.Material: 'shading' parameter is undefined.

これは、遅延レンダラーを使用していないときに正常に動作する線 (グリッド) のコードです。

var geometry = new THREE.Geometry();
geometry.vertices.push( new THREE.Vector3( -2500, 0, 0 ) );
geometry.vertices.push( new THREE.Vector3( 2500, 0, 0 ) );

linesMaterial = new THREE.LineBasicMaterial( {color: 0xb9b9b9, linewidth: 0.1} );

for ( var i = 0; i <= 50; i ++ ) {

    var line = new THREE.Line( geometry, linesMaterial );
    line.position.z = ( i * 100 ) - 2500;
    scene.add( line );

    var line = new THREE.Line( geometry, linesMaterial );
    line.position.x = ( i * 100 ) - 2500;
    line.rotation.y = 90 * Math.PI / 180;
    scene.add( line );

}

のような値でshadingプロパティを追加しようとしましたが、それでも同じエラーが発生します。THREE.LineBasicMaterialTHREE.FlatShading

エラーはTHREE.Material、メインの three.js スクリプトのセクションから報告されています。それが役立つ場合、three.js のわずかにカスタマイズされたバージョンを使用しています - <a href="http://alteredqualia.com/three/examples/js/three.max.deferredday.js" rel="nofollow"> http://alteredqualia.com/three/examples/js/three.max.deferredday.js

どんな助けでも大歓迎です!

アップデート

これは、この問題を示す Three.js のパブリック バージョンの簡単なハックです。

4

1 に答える 1

2

これはLineBasicMaterial、WebGLDeferredRenderer では行と行が (まだ) サポートされていないためです。

回避策として、これを行うことができます。

var geometry = new THREE.PlaneGeometry( 5000, 5000, 50, 50 );
var material = new THREE.MeshBasicMaterial( { color: 0xb9b9b9, wireframe: true } );
scene.add( new THREE.Mesh( geometry, material ) );

残念ながらmaterial.wireframeLinewidthどちらもサポートされていません。

three.js r.55

于 2013-02-11T19:40:59.190 に答える