Unity3d光线投射命中距离失真

Unity3d光线投射命中距离失真,unity3d,sensors,ros,raycasting,distortion,Unity3d,Sensors,Ros,Raycasting,Distortion,我在Unity3d中为模拟器制作激光传感器;我需要做的是从一个点以不同的角度投射光线,然后从Unity之外的另一个软件获得距离。 左侧是unity场景,其中红线是投射光线,右侧是另一个程序中显示的光线。程序只接收到距离中心点的距离和角度。 正如您所看到的,程序上复制的点是扭曲的 这是我用来计算距离的单位代码: RaycastHit hit; float max_dst = 20.0f*5; int steps = 1080; Vector3 raydir = Quaternion.Euler(

我在Unity3d中为模拟器制作激光传感器;我需要做的是从一个点以不同的角度投射光线,然后从Unity之外的另一个软件获得距离。 左侧是unity场景,其中红线是投射光线,右侧是另一个程序中显示的光线。程序只接收到距离中心点的距离和角度。 正如您所看到的,程序上复制的点是扭曲的

这是我用来计算距离的单位代码:

RaycastHit hit;

float max_dst = 20.0f*5;
int steps = 1080;
Vector3 raydir = Quaternion.Euler(0.0f, 135.0f,0.0f)*transform.forward;
Quaternion rot = Quaternion.Euler(0.0f, -270.0f/steps,0.0f);

Vector3 startPos = transform.position + offset;

for(int i=0; i<steps; i++) {

    if (Physics.Raycast (startPos, raydir, out hit, max_dst))
        dists[i] = hit.distance;

    raydir = rot*raydir;
}
raycastthit;
浮动最大值=20.0f*5;
整数步长=1080;
Vector3 raydir=四元数。Euler(0.0f,135.0f,0.0f)*变换。前进;
四元数rot=四元数欧拉(0.0f,-270.0f/步,0.0f);
Vector3 startPos=变换位置+偏移量;

对于(int i=0;i您是否尝试过调整最大距离参数?这可能是由于角度的浮点累加/精度问题(乘法/除法叠加)或者使用另一个程序/传感器?偏移量是否正确?更改最大距离没有帮助;我不认为这是浮点累加,因为我在扫描开始时有相同的失真;偏移量只是设置高度的恒定向量,如果我不使用它,我就有相同的问题。另一个程序不是我的d与真实传感器配合使用效果良好。