code

블렌더 : 구 주변 걷기

codestyles 2020. 12. 26. 10:04
반응형

블렌더 : 구 주변 걷기


블렌더 파이썬 게임 스크립팅을 이해하기 위해 저는 현재이 링크 의 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

반응형