Unity에서 Perception Neuron을 사용하여 MMD 모델 구동

14027 단어 MMDUnity

개시하다


Unity에서 Perception Neuron을 사용하여 MMD 모델을 제어하는 단계를 씁니다."Perception Neuron은 무엇입니까?"이런 분들은 먼저 "MMM에서 Perception Neuron 사용"를 볼 수 있다.

작업흐름


Perception Neuron공식 사이트은 Unity용 SDK를 공개했다.기본적으로 저쪽 포장을 사용할 수 있지만 Perception Neuron과 MMD 모델의 기본 자세는 다르다(Neuron은 T역 자세, MMD 모델은 A역 자세), 그 부분에 대해 조정이 필요하다.
조정의 방법으로 삼다
-MMD 모형을 A역에서 T역으로 미리 변형
- 프로그램 실행 시 기본 자세의 차이를 흡수
나는 두 가지 방법이 있다고 생각한다.
"MMM에서 Perception Neuron 사용"에서 "프로그램이 실행될 때 기본 자세의 차이를 흡수한다"는 방법으로 조정했다.여기서 MMD 모델을 A 입장에서 T 입장으로 미리 변형시키는 방법으로 조정하고 싶다.

MMD 모델을 T-유형으로 변형


MMD 모델을 먼저 준비합니다.여기 제가 사용할 수 있도록 허락해 주십시오Tda식 초음 미래.
PMX 편집기를 사용하여 모델의 기본 자세를 수정합니다.
PMX 편집기에서 MMD 모델을 엽니다.

TransformView를 엽니다.

오른쪽 어깨, 오른쪽 팔, 왼쪽 어깨, 왼쪽 팔의 Z축 각도를 T자태로 조정합니다.

[파일] → [현재 모양으로 저장]을 선택하고 적절한 이름으로 저장합니다.

Unity에서 MMD 모델 사용


Nora@Stereoarts의 MMD4 Mechannim을 사용하여 Unity에서 MMD 모델을 사용할 수 있습니다.MMD4 Mechanim은 Stereoarts Homepage에서 다운로드할 수 있습니다.상세한 사용 방법은 여기.에 기재되어 있다.
Unity에서 적절한 이름으로 새 프로젝트를 만듭니다.

편집기를 엽니다.

프로젝트의 Assets 폴더 아래에 있는 MMD 모델의 파일 세트를 복사합니다.

MMD4 Mecanim을 가져옵니다.

변환할 MMD 모델을 선택하고 규약 사용을 확인한 후 Process 버튼을 누릅니다.VMD가 비어 있어도 괜찮습니다.

생성된 모델을 선택하고 Rig의 Animation Type을 Humanoid로 변경한 다음 Apply 버튼을 누릅니다.

장면에서 모델을 구성합니다.MMD4 MechanimModel 스크립트의 Physics Engine을 Bullet Physics로 변경합니다.

Perception Neuron의 SDK 사용


Perception Neuron공식 사이트에서 UNITY SDK를 다운로드하세요(2016/3/5 현재 UNITY SDK 0.25가 최신 버전입니다).다운로드한 후 가져옵니다.

다음 대화상자가 표시되면 "I Made a Backup.Go Ahead 33"옵션입니다.

Assets/Neuron/Scripts/Mocap 내의 NeuronAnimatiorInstance 스크립트를 모델에 첨부합니다.Connect To Axis를 선택하십시오.

Axis Neuron의 준비


Perception Neuron공식 사이트에서 Axis Neuron을 다운로드하세요(2016/3/5 현재 Axis Neuron 2740이 최신 버전입니다).Axis Neuron Pro가 있는 분들도 가능합니다(2016/3/5 현재 Axis Neuron Pro3903이 최신 버전입니다).
Settings의 Broadcasting에서 BVH를 선택합니다.

bon의 각도 정보만 사용하기 때문에 위치 정보를 빼야 합니다.Settings의 Output Format에 대한 Displacement 검사를 취소합니다.(Displacement에 대한 검사를 진행하면 bon의 위치 정보를 사용하기 때문에 모델이 무섭다.)

적당한 동작을 틀어 봅시다.

유닛 쪽으로 돌아가서 실행해 봐.동작만 적용되면 됩니다.

2016/3/5 현재 UNITY SDK에 버그가 있는 것 같습니다. 일정 시간 가동되면 모형의 엄지손가락이 굵어집니다.

어쩔 수 없었기 때문에 엄지뼈의 각도 설정에 대해 논평을 했다.오른쪽 엄지와 왼쪽 엄지 모두 해야 한다.그래도 장시간 운동하면 형편없다.
NeuronAnimatorInstance
        // right hand
        SetRotation( animator, HumanBodyBones.RightHand, actor.GetReceivedRotation( NeuronBones.RightHand ) );
//      SetRotation( animator, HumanBodyBones.RightThumbProximal, actor.GetReceivedRotation( NeuronBones.RightHandThumb1 ) );
//      SetRotation( animator, HumanBodyBones.RightThumbIntermediate, actor.GetReceivedRotation( NeuronBones.RightHandThumb2 ) );
//      SetRotation( animator, HumanBodyBones.RightThumbDistal, actor.GetReceivedRotation( NeuronBones.RightHandThumb3 ) );
이렇게 된 느낌.
Unity Perception Neuron & MMD 모델pic.twitter.com/HVyezazoQI - aimino(@minoaimino)2016년 2월 24일.

VR 지원


겸사겸사 VR에 대응해 보겠습니다.PERCEPTION NEURON UNITY HANDBOOK의'HMD INTER GRANTION'장은 다음과 같다.
  • The rotation tracker of the HMD should always have priority. Don’t overwrite its rotation values with something else and don’t use the head rotation values from the Perception Neuron system.
  • Don’t use the positional tracking of the HMD.
  • Never parent the HMD cameras or GameObjects to the skeleton setup.
  • ※'PERCEPTION NEURON UNITY HANDBOOK'의'HMD INTERGRANTION'인용
    다음 방법을 추천합니다.
    ・머리 회전은 HMD에서 획득한 값을 사용합니다.Perception Neuron에서 얻은 값은 사용하지 않습니다.
    ・머리의 위치는 Perception Neuron에서 얻은 값을 사용합니다.HMD의 양수 음수 값을 사용하지 않습니다.
    다음은 VR을 위한 간단한 스크립트를 준비했다.
    Assets/NeuronExamples/OVRExample/NeuronOVRAdapter
    PERCEPTION NEURON UNITY HANDBOOK에서는 다음과 같습니다.
    ● On every new frame we position the OVR Camera Rig to the same position as the head target object.
    ● This target object is an empty GameObject inside the Head skeleton hierarchy. We use the target object to provide an easy way to define an offset and to set the correct position on the head.
    ● Since we never change the rotation of the OVR Rig you need to reset its tracker once you have the HMD on your head. This way the rig will be aligned correctly with your virtual body. Make sure you’re facing forward when resetting the Oculus tracker. (Note: you need to code the reference to the OVRManager yourself in order to reset
    the OVR pose).
    ※'PERCEPTION NEURON UNITY HANDBOOK'의'HMD INTERGRANTION'인용
    머리 주간의 레벨에 OVRcameraTarget의 이름으로 빈 GameObject를 추가합니다.잠시 후에 위치를 미세하게 조정합니다.

    OVRcameraTarget 위치에서 각 프레임 VR의 카메라 위치를 업데이트하지만 스크립트에서 카메라의 위치와 자세를 직접 변경하더라도 HMD에서 얻은 값으로 덮어씁니다.Camera Controller라는 이름으로 하늘을 만드는 Game Object, 카메라를 그 아이로 만들어라.HMD의 양수 및 음수 값을 비활성화하려면 Camera Controller의 Sccalle를 (0, 0, 0)으로 설정합니다.

    Camera Controller에 Neuron OVRadapter를 첨부하고 Bind Transform에 OVRcameraTarget를 설정합니다.

    PlaySettings용 Virtual Reality Supported

    카메라 클립 플랜의 네어를 좋은 느낌으로 조절해보세요.

    어렵기 때문에 바닥과 거울을 준비하세요.거울을 사용했다이것.

    실행해 보면 HMD의 방향과 모형의 방향이 일치하지 않는다.
    HMD 및 모델 방향을 재설정하는 스크립트를 만듭니다.우선 적당한 대상에 부속합시다.
    ResetOrientation
    using UnityEngine;
    using UnityEngine.VR;
    using System.Collections;
    
    public class ResetOrientation : MonoBehaviour {
    
        public GameObject modelRoot;
        public GameObject modelHip;
    
        // Update is called once per frame
        void Update () {
            if (Input.GetKeyDown(KeyCode.R))
            {
                InputTracking.Recenter();
                modelRoot.transform.rotation = Quaternion.Euler(0, -modelHip.transform.localRotation.eulerAngles.y, 0);
            }
        }
    }
    
    모델 Root에서 모델의 경로를 설정하고 모델 Hip에서 모델의 Hip을 설정합니다.R키로 HMD와 모형을 거울로 향합니다.

    이렇게 된 느낌.
    퍼셉션 뉴런과 오큘러스 리프트에서 미쿠가 된 뒤 "이, 이게 나야?"재미있게 놀았다.즐거웠어 https://t.co/385ymb79xX — aimino (@minoaimino) 2016년 3월 3일.

    좋은 웹페이지 즐겨찾기