virtual Chara 개발 - 3

점포 접객 등에 사용할 수 있는 가상의 캐릭터가 취급할 수 있는 앱 개발을 했습니다. 그 쪽의 설명은 이쪽이 됩니다.
htps : // 이 m/네

환경:
Windows 10
Unity 2018.4.1
RealSense D435i

Nuitrack 디버깅 정보 :





테스트하는 동안 시각적 디버깅 정보를 얻는 것은 처음부터 중요했습니다. Nuitrack 문서 페이지에는 골격 데이터를 유용한 방식으로 시각화하는 Unity 튜토리얼이있는 것이 좋았습니다.
h tps : // 어쨌든 d. 3ぢゔぃ. 이 m/인형 t등 ck/두 c/우니 tyRG반 dS 케톤 s_파게. HTML
SimpleSkeletonAvatar.cs 클래스를 상속하고 몇 가지 조정을 추가하여 골격 표현을 항상 비디오 이미지에 맞게 스케일하거나 이동시킬 수있었습니다. 이렇게 함으로써, 이용자 동영상이나 골격의 가시화를 축소해 오른쪽 상단으로 이동시켜, 캐릭터의 방해가 되지 않게 할 수 있었습니다. 또한 디버그 데이터가 표시되는 것을 전환하는 기능을 키에 매핑했습니다.

얼굴 추적을 구현할 때 시각적 디버깅을 위해 얼굴 데이터를 표시하는 기능도 필요합니다. 불행히도 튜토리얼은 없지만 방법은 비슷했습니다. 추적 된 얼굴 자료를 가져 오는 방법은 여기에 설명되어 있습니다.
h tps : // 어쨌든 d. 3ぢゔぃ. 이 m/인형 t등 ck/도 c/인 s단세_바세 d_아피. HTML

Nuitrack.GetInstancesJson()이라는 메서드가 있으므로 최신 업데이트에서 모든 얼굴 추적 자료를 포함하는 json 문자열을 반환합니다. 이 문서를 FaceInfo라는 Nuitrack SDK 클래스로 변환할 수 있습니다. 이 클래스에서 얻을 수 있는 가장 흥미로운 변수는 「landmark」 로, 31의 얼굴의 포인트를 포함한 Vector2 배열입니다. 이러한 정규화된 좌표에서 사용자의 얼굴에 해당하는 표시를 동영상에 인스턴스화하기 위한 투영 좌표를 계산할 수 있습니다.

sample1.cs
private void ProcessFaceLandmark()
{
    nuitrack.Skeleton skeleton = CurrentUserTracker.CurrentSkeleton;
    _faceInfo = NuitrackHelper.GetFaceInfo();

    if (CanProcessFaceLandmark(skeleton))
    {
        for (int i = 0; i < _landmarks.Count; i++)
        {
            Vector2 landmarkNormalizedPos = _faceInfo.Instances[0].face.landmark[i];

            _landmarks[i].SetActive(true);
            _landmarks[i].transform.position = GetLandmarkRenderPosition(_image, landmarkNormalizedPos);
        }
    }
    else
    {
        for (int i = 0; i < _landmarks.Count; i++)    _landmarks[i].SetActive(false);
    }
}

private Vector2 GetLandmarkRenderPosition(RawImage image, Vector2 landmarkPosition)
{
    float width = _image.rectTransform.rect.width;
    float height = _image.rectTransform.rect.height;
    Vector2 imagePosition = _image.gameObject.transform.position;
    float jointX = (imagePosition.x - (width / 2.0f)) + (landmarkPosition.x * width);
    float jointY = (imagePosition.y + (height / 2.0f)) - (landmarkPosition.y * height);
    return new Vector2(jointX, jointY);
}

다음은 Nuitrack 관절의 회전 제한에 대해 게시합니다. 그럼 다시

좋은 웹페이지 즐겨찾기