にTHREE.LineBasicMaterialを置くために、私はAFRAMEでLineBasicMaterialを置くことに取り組んでいますが、いくつかの問題につまずいています:AFRAME:どのようにAFRAME
1.変数は、何らかの形でスキーマに注入され、エラー
ずに取り出すことができません私はボックスがあります。
<a-box material="shader: linebasic;"></a-box>
をし、カスタムシェーダ登録している:
AFRAME.registerShader('linebasic', {
schema: {
blending: {default: THREE.NormalBlending},
color: {type: 'color', default: 0xffffff, is: 'uniform'},
depthTest: {default: true},
depthFunc: {default: THREE.LessEqualDepth},
depthWrite: {default: true},
fog: {default: false},
linewidth: {default: 10},
linecap: {default: 'round'},
linejoin: {default: 'round'},
needsUpdate: {default: true},
opacity: {default: 1},
side: {default: THREE.FrontSide},
transparent: {default: true},
vertexColors: {default: THREE.NoColors},
visible: {default: true}
},
init: function (data) {
console.log(data);
delete data.flatShading;
this.material = new THREE.LineBasicMaterial(data);
this.update(data);
},
update: function (data) {
this.material.clone(data);
}
});
を
どうやらdata.flatシェーディングは、オブジェクトとシェーダがそれを持っていなくても設定されています。だから私はdelete data.flatShading
です。
データにもある別のプロパティはshader
です。
コンポーネント::材質:エラー不明なシェーダスキーマ未定義+ 0msと
私はそれを残している場合、私は通知メッセージが表示されます:
私はそれを削除した場合、コンソールは私にこのエラーメッセージを表示しますTHREE.LineBasicMaterial: 'shader'はこの資料の所有物ではありません。
いずれにしても明らかに間違っています。 #1の
UPDATE:
@ngokevinよう修正#1以下の投稿:
私はTHREEを使っているにもかかわらずLineBasicMaterialは、白色の固体ブロックとして示し
AFRAME.registerShader('linebasic', {
schema: {
blending: {default: THREE.NormalBlending},
color: {type: 'color', default: 0xffffff, is: 'uniform'},
depthTest: {default: true},
depthFunc: {default: THREE.LessEqualDepth},
depthWrite: {default: true},
fog: {default: false},
linewidth: {default: 10},
linecap: {default: 'round'},
linejoin: {default: 'round'},
needsUpdate: {default: true},
opacity: {default: 1},
side: {default: THREE.FrontSide},
transparent: {default: true},
vertexColors: {default: THREE.NoColors},
visible: {default: true}
},
init: function (data) {
data = AFRAME.utils.extend({}, data);
delete data.flatShading;
delete data.shader;
this.material = new THREE.LineBasicMaterial(data);
this.update(data);
},
update: function (data) {
this.material.clone(data);
}
});
2 .LineBasicMaterialをとすると、そのプロパティのすべてがであり、THREE.Materialの多くのプロパティは、線として表示されず、ソリッドブロックとして表示されます。
MaterialとLineBasicMaterialには 'wireframe'がありません。このため、Wireframeを追加してLineBasicMaterialをハッキングするだけでは、この作業を行う方法がわかりません。
ナンバー2は、今、私にとって最も重要ですが、私はまた、私はそれらが関連していると思います。1.修正したいと思い、そのことが現在通過しているので、私は、#1のために一つの質問
ワイヤフレームを追加できますか? – ngokevin
'three.js:20406THREE.LineBasicMaterial: 'wireframe'はこのマテリアルのプロパティではありません。 ' LineBasicMaterialはワイヤフレームを使用していませんが、ワイヤフレームシェーダです。 – xaddict
あなたの線幅は10ですが、それはかなり厚いですか? – ngokevin