【发布时间】:2017-07-08 01:07:51
【问题描述】:
您好,我最近制作了一个组件,用于在原始形状和非原始形状之间进行碰撞检测。我正在使用three.js中提供的边界框碰撞..它工作正常,但是当我将它用于自定义对象时,它会减慢整个体验......请查看我的组件并告诉我有什么问题......
AFRAME.registerComponent('manual-body', {
matchingElements: function(attribute){
var matchingElements = [];
var allElements = document.getElementsByTagName('*');
for (var i = 0, n = allElements.length; i < n; i++){
if (allElements[i].getAttribute(attribute) !== null){
// Element exists with attribute. Add to array.
matchingElements.push(allElements[i]);
}
}
return matchingElements;
},
tick: function(){
var elements=this.matchingElements('manual-body');
for(var i=0;i<elements.length;i++){
if(this.el.id==elements[i].id){
continue;
}
firstBB = new THREE.Box3().setFromObject(elements[i].object3D);
secondBB = new THREE.Box3().setFromObject(this.el.object3D);
var collision = firstBB.intersectsBox(secondBB);
if(collision){
this.el.emit('collision', {elSource: this.el,elTarget:elements[i]});
}
}
}
});
您认为延迟的原因可能是什么?是tick函数内部的碰撞逻辑还是别的什么.....
谢谢
【问题讨论】:
-
通过自定义对象,您的意思是非“四四方方”模型?
-
通过自定义对象/非原始形状,我的意思是从free3d.com 以 .obj 格式获取的 3d 对象......当将组件与它们连接时,它会减慢体验......跨度>
-
这可能会发生,因为三在将盒子调整为您的模型时出现问题。你能在模型中创建一个不可见的盒子,并用它做相交检查吗?
-
如果您要求我检查 3d 对象与其他模型的碰撞,我是否使用原始形状(a-box)与它进行了交集检查,碰撞检测很好.. ...
标签: javascript three.js aframe