티스토리 뷰
확실하지 않은 정보이니, 참고해주세요.
public bool Fix Transforms : true일 경우, solver가 사용하는 모든 변환을 각 업데이트의 초기 상태로 수정. 이것은 적은 비용으로 애니메이션이 없는 뼈와 애니메이터 컬링에 대한 잠재적인 문제를 방지한다. CCD 및 FABRIK Solver에는 권장되지 않는다.
[ References ]
오브젝트이지만, 해당 부위들에 있는 빈 GameObject라고 생각하자. 해당 오브젝트들의 자료형은 Transform형이다.
→ root : 최상위 부모 오브젝트이다. 캐릭터 전체를 가지고 있는 오브젝트이기도 하다.
→ pelvis : 골반 오브젝트이다.
→ spine : 척추 오브젝트이다.
→ chest : 선택옵션이다. ( 있어도 되고 없어도 된다. 편하게 option이라고 적으면, 선택옵션이라고 생각하자. ) 가슴 오브젝트이다.
→ neck : option, 목 오브젝트이다.
→ head : 머리 오브젝트 이다.
→ leftShoulder : option, 왼쪽 어깨 오브젝트이다.
→ leftUpperArm : 왼쪽 윗 팔 오브젝트이다.
→ leftForearm : 왼쪽 아랫 팔 오브젝트이다.
→ leftHand : 왼쪽 손 오브젝트이다.
→ rightShoulder : 오른쪽 어깨 오브젝트이다.
→ rightUpperArm : 오른쪽 윗 팔 오브젝트이다.
→ rightForearm : 오른쪽 아랫 팔 오브젝트이다.
→ rightHand : 오른쪽 손 오브젝트이다.
[ Solver ]
IKSolver 클래스를 상속받는, Spine, LeftArm, RightArm, LeftLeg, RightLeg, Locomotion들이 포함이 되어 있다.
Range(start ~ end) : 편하게, Range(start ~ end)라고 표현하면, start에서 end까지의 값으로 조절할 수 있다고 생각하자.
→ IKPositionWeight : Range(0~1), 머리, 팔, 다리관련 무게들을 각각 정해줄 수도 있지만, 해당 변수로 각각 정해준 값을 무시할 수도 있다. IK 위치의 무게의 최상위 변수정도라고 생각하자.
→ LOD : Range(0~2), 0값은, 전체 품질을 해결한다. 1값은, 어깨 풀기, 스트레칭등은 사용불가하고, 척추 풀림의 품질이 감소된다. 이는 약 30%의 성능 향상을 제공하지만, 제대로 된 IK를 쓰기 위해선, LOD의 수치를 0에 맞추는 것이 좋을 것 같다. 마지막으로 2는, 컬링은 되었으나, 활성화가 된 경우에는 루트의 위치 및 회전이 업데이트가 된다.
→ plantFeet : true면, 헤드 타겟이 닿지 않더라도, 발가락을 심은 상태로 유지하므로 모델에 도달하기에 너무 높으면 카메라가 헤드에서 나갈 수 있다. 다리를 여러 번 해결해야하므로 solver의 비용이 증가한다.
[ Solver -> Spine ]
IKSolver 클래스를 상속받는, IKSolverVRSpine 클래스이다.
→ headTarget : 헤드 타겟, 이것은 카메라 Transform 자체가 아니여야 한다. 그러나 자식 born object는 parent born의
방향과 일치하도록 위치 및 회전을 조정할 수 있다. 설정하는 가장 좋은 방법은 카메라를 아바타의 눈으로 옮기고 head born을 복제 한 다음, 카메라의 부모 역할을 하는 것이다.
→ pelvisTarget : option, 골반 타겟은 장착된 rig에 유용하거나 배낭이나 벨트와 같은 곳에 추가 Tracking device가 있는 경우에 유용하다. 설정하는 가장 좋은 방법은 아바타의 골반 뼈를 복제하여, 골반 트래커의 부모가 되는 것.
→ positionWeight : Range(0~1), 헤드 타겟의 위치 가중치. headTarget을 null로 설정한 경우, 값을 0으로 설정할 때까지 헤드 타겟의 마지막 위치로 머리가 계속 당겨진다.
→ rotationWeight : Range(0~1), 헤드 타겟의 회전 가중치, headTarget을 null로 설정한 경우, 값을 0으로 설정할 때까지 헤드 타겟의 마지막 위치로 머리가 계속 회전한다.
→ pelvisPositionWeight : Range(0~1), 골반 타겟의 위치 가중치, pelvisTarget을 null로 한 경우, 값을 0으로 설정할 때까지 골반이 pelvisTarget의 마지막 위치로 계속 당겨진다.
→ pelvisRotationWeight : Range(0~1), 골반 타겟의 회전 가중치, pelvisTarget을 null로 한 경우, 값을 0으로 설정할 때까지 골반이 pelvisTarget의 마지막 위치로 계속 회전한다.
→ chestGoal : chestGoalWeight가 0보다 크면, 해당 객체의 위치가 앞으로 변환한다.
→ chestGoalWeight : Range(0~1), 가슴의 목표 가중치
→ minHeadHeight : 캐릭터 루트에서 머리의 최소 높이
→ bodyPosStiffness : Range(0~1), 몸이 머리의 위치를 얼마나 영향을 받을 지를 결정.
→ bodyRotStiffness : Range(0~1), 몸이 머리의 회전을 얼마나 영향을 받을 지를 결정
→ neckStiffness : Range(0~1), 가슴이 머리의 회전까지 얼마나 회전하는 지를 결정.
→ rotateChestByHands : Range(0~1), 가슴 회전 값을 고정시킨다. 0.5값은 머리를 기준으로 가슴의 90도 회전까지 허용하며, 값이 0이면 180도, 1일 경우에는 가슴이 머리를 기준으로 회전한다.
'게임 프로그래밍 ( 이제 안함 ) > Etc' 카테고리의 다른 글
10초안에 끝내는 웹 페이지 전체 캡쳐하기 (0) | 2022.05.23 |
---|---|
iOS 앱 등록하기 (0) | 2019.09.18 |
오큘러스 고 ( Oculus GO ) apk 파일 기기에 빌드하기_ 수정편 (20) | 2019.08.03 |
Spine2D 애니메이션 멈춤 또는 다시 실행하기 (1) | 2019.06.26 |
유니티를 공부하기 좋은 사이트 ( 업데이트 ) (0) | 2019.05.13 |
- Total
- Today
- Yesterday
- CSS
- Git
- 프로그래밍
- 게임프로그래밍
- 유니티
- HTML
- GitHub
- c#
- Java
- Controller
- Spring
- 서블릿
- 스프링
- Servlet
- unity3d
- spring boot
- JSP
- Base Of Coding
- 비지니스 로직
- 프리젠테이션 로직
- 뷰포리아
- VR
- Next.js
- 유니티3D
- 안드로이드
- Unity
- 유니티로 배우는 C#
- baseofcoding
- MVC
- Vuforia
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |