6

Unity3D Pro からよくわからない警告が出ました。GUI でプレーヤーの Transform.position.x を 1000000 に設定すると、次の警告が表示されました。

「浮動小数点精度の制限により、GameObject のワールド座標をより小さな範囲内にすることをお勧めします。」

1 つのシーンを 1000000*1000000*1000000 よりも小さくする必要があるということですか。これは十分に大きいと考えられますか?より大きな世界が必要な場合、複数のシーンが必要になりますか? 新しいシーンが読み込まれると、プレーヤーの位置はリセットされますか? 位置データが範囲外にならないようにするにはどうすればよいですか?

4

1 に答える 1

13

大きさが 1,000,000 の数値の場合、IEEE-754 32 ビット 2 進浮動小数点のステップ サイズは 1/16 (.0625) です。したがって、表現可能な 1,000,000 を超える次の数値は 1,000,000.0625 です。

.0625 の変更が目に見えないビューがある場合は、これで問題ないかもしれません。ワールド内のオブジェクトの縮尺が .0625 がオブジェクトの特徴よりもはるかに小さく、.0625 の違いが人間の目に見えるところまでビューがズームインしない場合、問題はない可能性があります。(ただし、もう少し余裕が必要な場合があります。そのサイズのオブジェクト フィーチャが表示されていなくても、速度、位置などの計算では .0625 より小さい増分を使用できないため、数学の一部が影響を受ける可能性があります。 1,000,000 の大きさの数で 32 ビット演算を行っています。)

これを原点近くの数値、たとえばマグニチュード 100 の数値と比較します。100 では、ステップ サイズは 1/131072 (.00000762939453125) です。この細かい解像度を利用してオブジェクトを描画する場合、それらが原点に近い限りきれいに見えます。ただし、シーン内を座標の大きさが大きい場所に移動すると、解像度が失われます。

ここでの基本的な問題は、シーンのサイズとシーン内の詳細のサイズの比率です。それが限られていることです。オブジェクトの特徴も大きい限り、大きな座標を持つことができます。しかし、座標が大きい間は細かいオブジェクトの特徴を維持できません。

于 2013-06-02T13:27:09.680 に答える