-
-
Notifications
You must be signed in to change notification settings - Fork 140
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DebugCamera3D がコンストラクタで指定した注視点と異なる位置を注視するバグ #1255
Comments
Raclamusi
changed the title
DebugCamera3D がコンストラクタで指定した注視点と異なる位置を注視する
DebugCamera3D がコンストラクタで指定した注視点と異なる位置を注視するバグ
Sep 25, 2024
|
コメントありがとうございます! |
問題を確認しました。修正方法も妥当だと思います。PR 受け付けます! |
Raclamusi
added a commit
to Raclamusi/OpenSiv3D
that referenced
this issue
Nov 17, 2024
Reputeless
pushed a commit
that referenced
this issue
Nov 17, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
DebugCamera3D
がコンストラクタの引数focusPosition
で指定した注視点と異なる位置を注視します。下のスクリーンショットは
BasicCamera3D
とDebugCamera3D
にそれぞれ赤い球を注目するようコンストラクタで指定したときの結果です。BasicCamera3D
の場合は赤い球が中心にあるのに対し、DebugCamera3D
の場合は赤い球が中心から外れています。再現コード
原因の考察と解決策
原因は
DebugCamera3D::m_focusY
の初期化にあると考えられます。OpenSiv3D/Siv3D/include/Siv3D/DebugCamera3D.hpp
Line 35 in 9c77228
DebugCamera3D
の注視点は、カメラ位置を中心とする半径 1 の y 方向に無限に伸びる伸びる円筒上に正規化されます。カメラ位置から注視点へのベクトルを正規化したベクトルを使って
m_focusY
を初期化していますが、このベクトルの y 成分が 0 でないとき、その指す位置は円筒上になく、その y 成分でm_focusY
を初期化したとき本来指すべき位置より y 座標の絶対値が小さくなります。つまり、カメラ位置から注視点へのベクトルを円筒上に来るように正規化し、
m_focusY
を初期化することでこの問題は解決できます。例えば、
m_focusY
の初期化を次のように変更します。The text was updated successfully, but these errors were encountered: