No still do transform vector.
Was just testing a vector against some terrain and got weird results.
Changed to using 3.6 Ray in Broomstick and it automagically worked.

Total mess but something like

private function RayFaceTest( obj:Mesh,posV:Vector3D):Array{
var intersectVector:Vector3D;
var intersectVectorArr:Array = [];
var ray:Ray = new Ray();
var indice:uint = 1;

var subG:SubGeometry = obj.geometry.subGeometries[0]; //other subg
var indices:Vector.<uint> = subG.indexData.concat();
var vertices:Vector.<Number> = subG.vertexData.concat();

for (var i:int = 0; i < indices.length / 3;++i) {
var pointer:uint = i*3;
var pointerverts:uint = indices[pointer]*3;
var v0:Vector3D = obj.sceneTransform.transformVector(new
Vector3D(vertices[pointerverts], vertices[pointerverts+1],
vertices[pointerverts+2]));
pointerverts = indices[pointer + 1] * 3;
var v1:Vector3D = obj.sceneTransform.transformVector(new
Vector3D(vertices[pointerverts], vertices[pointerverts+1],
vertices[pointerverts+2]));
pointerverts = indices[pointer + 2] * 3;
var v2:Vector3D = obj.sceneTransform.transformVector(new
Vector3D(vertices[pointerverts], vertices[pointerverts + 1],
vertices[pointerverts + 2]));

//ray.orig=posV //posV is a new Vector3D(0,500,0); y is -- in render loop
var dirV:Vector3D= posV.clone()
dirV.y -= 30
//trace(ray.orig, dirV)
intersectVector = ray.getIntersect(posV, dirV, v0, v1, v2);
//intersectVector = ray.getIntersect(ray.orig, dirV, v0, v1, v2); //issues

if (intersectVector) {
intersectVectorArr[0] = intersectVector;
//do normal
//   intersectVectorArr[1] = normal

break;
}
}

return intersectVectorArr;
}

Reply via email to