射线碰撞问题

AR模式下射线无法和UI发生碰撞,是不是没有支持这个功能?只有three版本不支持?或者说哪个版本支持?
已邀请:

谷主

赞同来自:

threejs sdk我没有做过射线碰撞。

mader89

赞同来自:

射线碰撞我自己改了下代码,现在应该是可以检测到物体了,但是暂时还不能计算射线长度,没有事件分发。不知道有没有支持射线的平台版本可以参考下
//
var hitTestRay = {}
hitTestRay.origin = new THREE.Vector3()
hitTestRay.direction = new THREE.Vector3()

hitTestRay.origin.copy(this.raycaster.ray.origin)
hitTestRay.direction.copy(this.raycaster.ray.direction)

var hitContext = new fgui.HitTestContext()
hitContext.camera = this.camera
hitContext.ray = hitTestRay
hitContext.forTouch = true

var target = fgui.Stage.rayHitTest(hitContext)

// Stage.ts
public static rayHitTest(context: HitTestContext): DisplayObject {
return rayHitTest(context)
}

function rayHitTest(context: HitTestContext) {

Stage.disableMatrixValidation = true;
let ret = traverseHitTest(_scene, context);
Stage.disableMatrixValidation = false;

return ret;
}

mader89

赞同来自:

射线长度计算目前也已经解决了,仅供参考。在DisplayObject添加raycast方法,利用_contentRect: Rect的四个顶点来计算,raycaster.ray.intersectTriangle,具体可以参考three.js中Sprite的raycast方法。

要回复问题请先登录注册