VRChat 마이너 갤러리 저장소

제 목
일반 블렌더로 본 추가하고 프로젝트 살리기 + 클릭 한번으로 옷입히기 강좌
글쓴이
ㅇㅇ
추천
11
댓글
6
원본 글 주소
https://gall.dcinside.com/vr/1823682
  • 2022-04-28 01:33:40
  • 124.146
							

시작하기에 앞서...

 

이 강좌는 "나는 아바타 뚜따를 많이 해봤고 블렌더로 본을 추가하고 웨이트까지 칠 할 줄 안다" 는 분들을 위한 강좌입니다.

최대한 알기 쉽게 쓰려고 하지만 강좌 진행에 다소 불친절한 부분이 있을 수 있으니 양해 부탁드립니다!


 

최근 피직스본 업데이트를 하고나서 아바타 뺨에 본을 심거나 혀에 본을 심는 작업을 하는 분들이 많아졌는데

   


   

보통 본을 추가하는 작업 후에 다시 옷입히고 어쩌고 하면 너무 시간이 오래 걸리니 유니티에 FBX 덮어쓰기를 하실거에요

근데 그러면 문제점이 하나 생깁니다.


(있었는데요? 없었습니다..)



Skinned Mesh Renderer, Mesh에 수정한 메쉬를 집어 넣어도 아무것도 렌더링 되지 않습니다.

 

본을 추가하는 작업 후에 FBX덮어쓰기를 하면 이런 문제가 생기는데요

이거 해결하는 방법을 알려드리려 합니다.



본 강좌에서 나오는 방법을 응용하면 간편하게 버튼 하나로 아바타 옷을 입힐 수도 있고

옷 본과 바디 본을 합칠 수도 있습니다.






그럼 강좌 시작합니다..

우선 오브젝트에 할당된 메쉬의 웨이트를 이름만 같은 다른 오브젝트로 재할당 하는 코드를 하나 작성합니다. 

 

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

 

[ExecuteInEditMode]

public class ReassignBoneWeigthsToNewMesh : MonoBehaviour

{

public Transform newArmature;

public string rootBoneName = "Hips";

public bool PressToReassign;

 

void Update()

{

if (PressToReassign)

Reassign();

PressToReassign = false;

}

 

// [ContextMenu("Reassign Bones")]

public void Reassign()

{

if (newArmature == null)

{

Debug.Log("No new armature assigned");

return;

}

 

if (newArmature.Find(rootBoneName) == null)

{

Debug.Log("Root bone not found");

return;

}

 

Debug.Log("Reassingning bones");

SkinnedMeshRenderer rend = gameObject.GetComponent<SkinnedMeshRenderer>();

Transform[] bones = rend.bones;

 

rend.rootBone = newArmature.Find(rootBoneName);

 

Transform[] children = newArmature.GetComponentsInChildren<Transform>();

 

for (int i = 0; i < bones.Length; i++)

for (int a = 0; a < children.Length; a++)

if (bones[i].name == children[a].name)

{

bones[i] = children[a];

break;

}

 

rend.bones = bones;

}

 

}

 

 

위 코드를 복사하고 Visual Studio를 켜서 붙여넣기 그리고 ReassignBoneWeigthsToNewMesh 라는 스크립트를 하나 만들어줍니다.

(비주얼 스튜디오는 무료 개발자 소프트웨어 입니다. 마이크로 소프트에서 다운로드 받으시면 됩니다.)

7eef9e36ebd518986abce8954484766e26

작성한 스크립트는 작업중인 유니티에 넣어주도록 합니다.





혀 본 추가 작업을 했다고 가정하고 진행하겠습니다. 수정본의 FBX를 하이어라키로 끌어옵니다.




수정본 FBX에서 우리가 블렌더로 추가한 혀(Tang) 본을 기존 아바타 Head 본에 끌어넣습니다.




그 후 새롭게 끌어왔던 FBX의 모든 메쉬를 shift + 클릭으로 다중 선택하고 우리가 이전에 만든 ReassignBoneWeigthsToNewMesh 컴포넌트를 추가해줍니다.





a17d2c746e18f1e6e2483039eb3d6a2d3b3754bf2c8a58ea7306289ad4

이런 컴포넌트가 추가 되었을 텐데 New Amature에 기존 모든 메쉬가 증발한 아바타의 Amature를 넣고 Press To Reassign을 눌러 주시면 됩니다.

그럼 아무반응이 없을텐데 아무 반응이 없는게 정상 적용된겁니다. 에러가 뜨면 체크박스에 체크가 됩니다.


보통 에러가 나는 경우는 웨이트를 옮길 본의 이름이 맞지 않다던가 경로가 이상한 경우입니다.

에러가 나는 경우 망가지는건 없으니 크게 걱정하지말고 본의 이름과 경로를 다시한번 확인해보시길 바랍니다.


에러의 경우 본의 포지션 값과는 관계가 없습니다.




잘 적용 되었다면


기존의 메쉬들은 삭제해주고 새로 끌어왔던 FBX의 메쉬들을 전부 끌어다 증발했던 아바타 안으로 옮겨주고

ReassignBoneWeigthsToNewMesh도 삭제해주고 하이어라키를 정리해줍니다.



새로운 메쉬들이 웨이트가 옮겨져 잘 따라오는 모습을 볼 수 있습니다.



앞서 소개한 응용해서 옷을 입히는건 더 쉽습니다.


그냥 입힐 옷에 ReassignBoneWeigthsToNewMesh 컴포넌트 넣고 본 합치면 됩니다.


쉐이프키 녹화나 애니메이션도 망가지지 않습니다.

이상으로 강좌 마칩니다.



정말 사용하기 나름 작업시간을 엄청 단축 시킬수 있는 꿀팁이라

많은 분들이 알았으면 좋겠네요.

Happy 2022.04.28 01:35:01
레레땅 개추 2022.04.28 01:35:53
토끼찹쌀떡 이젠 하다하다 코딩까지해야하네... 2022.04.28 01:37:01
Paisly 근본적인 해결책인거같아서 좋네여 아바타툴즈쓰면 스크립트없이 비슷한작업할수있긴한거같아여 - dc App 2022.04.28 01:38:09
ㅇㅇ 읽진 않았지만 좋은 강좌네요 219.241 2022.04.28 01:48:33
2만마일 트위터에서보고잘쓰고잇슴이거 - dc App 2022.04.28 01:49:48
번호 분류 제목 글쓴이 날짜 추천
1890762 일반 념글머애욤ㄷㄷ 복실이 2022-05-20 108
1890761 일반 수억년만에 갤 왔는데 Leaf. 2022-05-20 111
1890760 일반 뭐야?개념글 안눌렀는데 왜전부 념글? 설탕소다 2022-05-20 111
1890759 일반 노무추 ㅇㅇ 1.252 2022-05-20 110
1890758 일반 코드좀 걸어보삼 새벽바람 2022-05-20 109
1890757 강좌 은근 모르는 유니티 꿀팁 러스크 2022-05-20 111
1890756 일반 진짜 글 볼수록 브갤애들 정 존나 떨어지네 ㅇㅇ 메모한다 서라벌 2022-05-20 110
1890755 일반 걍 주작기돌린애가 꺼줄때까지 암것도못할텐데 멈블 2022-05-20 109
1890754 일반 갤대체 왜망함... ㅇㅇ 222.110 2022-05-20 110
1890752 일반 새것같은 바이브프로 5만원애 사는법 tntnt 2022-05-20 109
1890750 일반 꼴리는 부위 안테나 2022-05-20 110
1890749 일반 리파 마야바디 뚜따해둔거 왜지웠지 페이 2022-05-20 105
1890748 일반 애쉬좋아하면 개추 응애sh 2022-05-20 111
1890747 일반 유명한 과몰입주인공이 제친구 형임.... 백수 2022-05-20 110
1890746 일반 지금 념글 더이상 못내리는거임? 달빛 2022-05-20 110
1890745 일반 너무무섭다! 예아온 2022-05-20 109
1890744 일반 알몸보려고 븨알캐릭비벼본사람 개추 뭉굴이 2022-05-20 110
1890743 일반 그냥 념글컷을 잠깐 200쯤으로 올리죠 카데바 2022-05-20 111
1890742 일반 근데 개추박히는거 좀 신남.. 헬창씹덕 2022-05-20 110
1890741 일반 시발갤머임 2만마일 2022-05-20 111
1890740 일반 와! 일이넘처나!! ㅁㄴㅇㄹ 2022-05-20 111
1890739 일반 ㅅㅂ 왜 비회원은 짤 못올리는데 ㅇㅇ 210.217 2022-05-20 106
1890738 일반 뻘글을 더 많이 쓰면 다음페이지로 밀려나지않을까? ㅇㅇ 210.217 2022-05-20 111
1890737 일반 이게 카테고리가 개념글이냐 전체냐 밍뉴 2022-05-20 110
1890736 일반 쟤는 주작기부계임? Rury 2022-05-20 109
1890735 일반 뭐임 갤 왜 지랄남? 찐꾸 2022-05-20 110
1890734 일반 찐따들 신나서 ~~~면 개추 ㅈㄴ하네 새벽바람 2022-05-20 112
1890733 일반 진짜 개좆같은 새끼들 쌍으로 지랄하내ㅋㅋㅋㅋ 카데바 2022-05-20 110
1890732 일반 완장 좆밥임? ㅇㅇ 138.199 2022-05-20 109
1890731 일반 드리밍개추 ㅇㅇ 210.123 2022-05-20 109
1890730 일반 내가 말했잖 저 병신새끼들은 관종이라고 ㅇㅇ 서라벌 2022-05-20 109
1890729 일반 파딱신고식제대로하네 라그나로크 2022-05-20 110
1890728 일반 어느정도 카와이무빙은 마스터햇으면 개추 뭉굴이 2022-05-20 110
1890727 일반 추천이 초마다 20개식 올라가네 Castella 2022-05-20 109
1890726 일반 문재앙,찢재명 ㅈ같다 개추 ㅇㅇ 175.215 2022-05-20 34
1890724 일반 마이크끄고 요염한여자인척 애써본적잇으면 개추 뭉굴이 2022-05-20 112
1890723 일반 완장들 정보글 백업이나 해줘 새벽바람 2022-05-20 111
1890722 일반 노래방오센 ㅇㅇ 221.154 2022-05-20 48
1890721 일반 정갤승급하면 이지랄안날수잇슴? 곰_코 2022-05-20 111
1890719 일반 고생하는 파딱 수고가 많다면 개추 ㅋㅋㅋㅋ ㅇㅇ 2022-05-20 109
념글 삭제글 갤러리 랭킹