✈️
Unity with ARFoundationでスマホで取得した平面をOBJ出力する
スマホで取得した平面を出力したい
何でもいいからとりあえず題目のことをしたいというせっかちさんは↓からどうぞ
※動確はしていますが、細かいところは自分で解決してください。
コード解説
回転角
これ重要
角度を計算しないとオブジェクトが2個以上だった時に水平に突っ伏します。
// 回転反映
Vector3 RotateAroundPoint(Vector3 point, Vector3 pivot, Quaternion angle)
{
return angle * (point - pivot) + pivot;
}
スケール
これも重要
スケールを計算しないとオブジェクトが2個以上だった時にバウンディングボックスが重なります。
// スケール反映
Vector3 MultiplyVec3s(Vector3 v1, Vector3 v2)
{
return new Vector3(v1.x * v2.x, v1.y * v2.y, v1.z * v2.z);
}
ポジション
これも重要
ポジションを計算しないとオブジェクトが2個以上だった時に同じ位置で重なります。
v += mf.gameObject.transform.position;
以上を考慮した頂点算出
//頂点情報
foreach (Vector3 vx in msh.vertices)
{
Vector3 v = vx;
v = MultiplyVec3s(v, mf.gameObject.transform.lossyScale);
v = RotateAroundPoint(v, Vector3.zero, mf.gameObject.transform.rotation);
v += mf.gameObject.transform.position;
v.x *= -1;
sb.AppendLine("v " + v.x + " " + v.y + " " + v.z);
}
Discussion