簡體   English   中英

如何根據OpenGL的本地位置/旋轉在OpenGL中移動/旋轉對象

[英]How to move/rotate an object in OpenGL according to it's local position / rotation

進入C ++和OpenGL,來自Python背景,你有applyMovementapplyRotation (當然還有worldPositionworldOrientation )我覺得我缺少OpenGL的東西。 基本上,我有一個玩家,一個立方體。

我希望立方體使用上/下箭頭鍵來回移動,始終處於它所面對的位置。 然后,使用左/右箭頭,我希望玩家圍繞它自己的原點旋轉。 所以我最終將采用舊的生化危機控制方案(坦克控制)

現在, glTransposeglRotate工作,但取決於我先做的任何一個 ,它似乎向正確的方向移動,但圍繞世界起源旋轉。

要么

它圍繞它自己的軸旋轉,但運動始終符合世界軸心。

我不打算移動/旋轉世界或世界+相機,因為我正在尋找第三人稱固定相機游戲。 基本上我希望與Python中的applyMovement / applyRotation完全相同 但我對如何實施這一點持開放態度。

由於您使用立即模式進行渲染,因此首先需要glTranslate對象中心的負向量,應用旋轉,然后glTranslate回到它的位置。 有效:

glTranslate( -center.x, -center.y, -center.z );
glRotate( ... );
glTranslate( center.x, center.y, center.z );

現在這僅適用於渲染部分。 對於運動,您需要跟蹤立方體旋轉的角度,並使用正弦和余弦向前或向后移動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM