블렌더 : 구 주변 걷기
블렌더 파이썬 게임 스크립팅을 이해하기 위해 저는 현재이 링크 의 FPSController 구조를 사용하여 구체를 돌아 다닐 수있는 장면을 구축하려고합니다 . 중력 및 FPSController 방향을 위해 현재 다음과 같은 파이썬 컨트롤러를 구성하려고했습니다.
def main():
print("Started")
controller = bge.logic.getCurrentController()
me = controller.owner
distance, loc, glob = me.getVectTo((0,0,0))
grav = controller.actuators['Gravity']
strength = me['Gravity']
force = strength*(distance*distance)*glob
grav.force = force
try:
rot = Vector((0,0,-1)).rotation_difference(glob).to_matrix()
except Exception as E:
print(E)
rot = (0,0,0)
rotZ = me.orientation
me.orientation = rot*rotZ
controller.activate(grav)
main()
어떤 각도가 180도를 넘을 때까지 대략적으로 작동하고 불 연속적으로 보입니다. 나는 이것이 rotation_difference가 불 연속적이라고 가정합니다 . Math Types & Utilities에 대한 블렌더 문서 는 아무 말도하지 않았고, 연속 맵이 가능한지 아직 확인하기 위해 4 차 표현에 대해 충분히 생각하지 않았습니다. 그리고 더 우아한 방법이 있다고 생각합니다. 로컬 Z 방향은 지속적으로 마우스에 의존하고 로컬 X 및 Y 방향은 주어진 벡터에 지속적으로 의존한다는 것을 달성하려면 어떻게해야합니까?
쿼터니언을 사용하여 이러한 회전을 수행해야한다는 것이 합의 된 것 같습니다.
API에 대해서는 http://www.blender.org/documentation/249PythonDoc/Mathutils.Quaternion-class.html을 참조하십시오.
수학에 대한 소개는 http://en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions#Quaternions 를 참조하십시오 .
allign 기능이 있습니다. game-object가 own이라고 불리는 경우 own.alignAxisToVect(vector, 2, 1)
2는 Z 축 (x = 0, y = 1, z = 2)에 대한 인덱스이고 1은 할당 속도 (0과 1 사이)입니다.
참조 URL : https://stackoverflow.com/questions/11904659/blender-walk-around-sphere
'code' 카테고리의 다른 글
Motorola 장치 : ThreeTen에서 날짜 구문 분석시 org.threeten.bp.DateTimeException (0) | 2020.12.26 |
---|---|
matplotlib 그림을 만든 후 어떻게 메모리를 해제 할 수 있습니까? (0) | 2020.12.26 |
async / await로 추적 스택 (0) | 2020.12.26 |
변경된 파일 만 다시 컴파일하도록 Makefile을 만들려면 어떻게해야합니까? (0) | 2020.12.25 |
Pinterest와 같은 Android 이기종 gridview? (0) | 2020.12.25 |