ブレンダーで簡単な 3D モデルを作成し、.obj ファイルにエクスポートしました。今、three.js を使用してロードしています。名前に「クリック可能」という文字列が含まれるオブジェクトをクリックすると、Y 軸上を移動します。
ここで見ることができます:http: //three.parkz.cz/shop.html
問題は、(ブレンダーで設定した) オブジェクトの名前から解析された情報が正しいオブジェクトに対応していないことです。
読み込みと解析:
var loader = new THREE.OBJMTLLoader();
loader.addEventListener('load', function(event) {
object = event.content;
object.name = 'CustomObjects';
for(var i = 0; i < object.children.length; i++) {
//console.log(object.children[i]);
var properties = object.children[i].name.split('_');
if(properties[1] == 'clickable') {
object.children[i].clickable = true;
} else object.children[i].clickable = false;
}
object.rotation.x = 0.5;
object.rotation.y = 0.5;
scene.add(object);
});
loader.load('shop.obj', 'shop.mtl');
たとえば、中央にある 2 つの立方体 (「005_kiosek」と「010_kiosek2」と呼ばれる) はクリック可能ではないはずですが、クリック可能です! コンソールを開いてクリックすると、「004_clickable」と「009_clickable」という名前が間違っていることがわかります。
ここに私のブレンダーファイルがあります: http://three.parkz.cz/shop.blend
JavaScript側の問題ですか、それともブレンダーのエクスポートが間違っていますか?
前もって感謝します!
マーティン
PS: 単純なメッシュ (緑と青) がうまくレンダリングされない理由を知っている人はいますか?