โปรไฟล์อวตาร (แมปบเลนด์เชปสำหรับใบหน้า)
กำหนดชื่อใบหน้ามาตรฐานของ VRM ให้ตรงกับ BlendShapes ของอวตารแต่ละตัว
VRC Avatar Viewer รับข้อมูลสีหน้า (ชื่อสีหน้ามาตรฐาน VRM เช่น Joy / A / Blink เป็นต้น) ที่ได้รับผ่านโปรโตคอล VMC แล้วกำหนดให้กับ BlendShapes ของสีหน้าอวาตาร์โดยอัตโนมัติ สำหรับอวาตาร์ VRChat จะกำหนดลิปซิงค์ที่ระบุใน Avatar Descripter โดยอัตโนมัติ ทำให้ปากขยับได้ อย่างไรก็ตาม หากสร้าง อวาตาร์โปรไฟล์ เฉพาะสำหรับอวาตาร์ คุณสามารถกำหนดความสัมพันธ์ได้อย่างละเอียดด้วยตนเอง
อวาตาร์โปรไฟล์คือไฟล์ข้อความในรูปแบบ .toml โดยเตรียม 1 ไฟล์ต่อ 1 อวาตาร์ เพียงเลือกจากแผงโหมดสตรีมมิ่งก็สามารถใช้งานได้ทันที และสามารถสลับเปลี่ยนได้ตลอดเวลาแม้ระหว่างรับสัญญาณ VMC

- คู่มือนี้อ้างอิงการทำงานพื้นฐานของการรับสัญญาณ VMC (การเชื่อมต่อ Motion Capture) กรุณาตรวจสอบให้แน่ใจว่าอวาตาร์เคลื่อนไหวได้ก่อน
- สำหรับอวาตาร์ VRM (.vrm) เนื่องจาก VRM มีนิยาม BlendShapes ในตัวเอง ฟีเจอร์นี้จึงมีไว้สำหรับอวาตาร์ VRChat รูปแบบ
.avabเป็นหลัก
ตำแหน่งของไฟล์โปรไฟล์
วางโปรไฟล์ไว้ในโฟลเดอร์ avatar_profiles ซึ่งอยู่ในโฟลเดอร์เดียวกับตัว VRC Avatar Viewer
- เปิด VRC Avatar Viewer แล้วกดปุ่ม โหมดสตรีมมิ่ง บนทูลบาร์
- กด เปิดโฟลเดอร์ ในหัวข้อ "อวาตาร์โปรไฟล์" จะเปิดโฟลเดอร์
avatar_profilesใน Explorer - คัดลอก
sample.tomlในโฟลเดอร์ แล้วเปลี่ยนชื่อเป็นชื่ออวาตาร์ของคุณ (เช่น:my_avatar.toml) - เปิดด้วยโปรแกรมแก้ไขข้อความ (Notepad, VS Code เป็นต้น) แล้วแก้ไข

sample.tomlจะไม่แสดงในรายการโปรไฟล์ สามารถเก็บไว้เป็นไฟล์อ้างอิงได้- นามสกุลต้องเป็น
.tomlเท่านั้น - ชื่อไฟล์ (ส่วนที่ไม่รวมนามสกุล) เป็นอิสระ ฝั่ง Viewer จะใช้ค่าของฟิลด์
nameเป็นชื่อที่แสดง
วิธีเขียนไฟล์ TOML
โครงสร้างขั้นต่ำคือ name ที่ต้นไฟล์ และบล็อก [[expressions]] ตามจำนวนที่ต้องการ
name = "マイアバター"
[[expressions]]
source = "Joy"
target = "face_happy"
renderer = "Body"
[[expressions]]
source = "Blink"
target = "eye_close"
renderer = "Body"
[[expressions]]
source = "A"
target = "mouth_a"
renderer = "Body"
ความหมายของแต่ละฟิลด์มีดังนี้
| ฟิลด์ | คำอธิบาย | เมื่อละเว้น |
|---|---|---|
source |
ชื่อสีหน้าฝั่งรับสัญญาณ (Joy / A / Blink เป็นต้น) | จำเป็น |
target |
ชื่อ BlendShapes ของสีหน้าอวาตาร์ | จำเป็น |
renderer |
ชื่อ GameObject ของ SkinnedMeshRenderer ที่มี BlendShapes ของสีหน้า | ค้นหาอัตโนมัติ |
min_weight |
ค่าขั้นต่ำของน้ำหนัก BlendShapes ของสีหน้า (0〜100) | 0 |
max_weight |
ค่าขั้นสูงของน้ำหนัก BlendShapes ของสีหน้า (0〜100) | 100 |
- หากเขียน
[[expressions]]หลายบล็อกสำหรับsourceเดียวกัน จะสามารถขยับ BlendShapes ของสีหน้าหลายรายการพร้อมกันด้วยสีหน้าเดียว - บรรทัดที่ขึ้นต้นด้วย
#คือคอมเมนต์ สามารถเขียนได้อิสระ
รายชื่อ source ที่ใช้ได้
ชื่อสีหน้าที่ระบุใน source ได้คือหมวดหมู่ต่อไปนี้ที่เป็นมาตรฐาน VRM โดยไม่แยกตัวพิมพ์ใหญ่/เล็ก
| หมวดหมู่ | ชื่อ source |
|---|---|
| สีหน้า | Joy / Angry / Sorrow / Fun / Surprised / neutral |
| ลิปซิงค์ | A / I / U / E / O |
| กะพริบตา | Blink / Blink_L / Blink_R |
| ทิศทางสายตา | LookUp / LookDown / LookLeft / LookRight |
| คิ้ว | browDownLeft / browDownRight / browInnerUp / browOuterUpLeft / browOuterUpRight |
- ชื่อสีหน้าที่ไม่อยู่ในรายการนี้ (เช่น พารามิเตอร์มุมปาก แก้ม และลิ้นที่ละเอียดของ VRCFaceTracking) ไม่สามารถจัดการได้ในอวาตาร์โปรไฟล์ หากต้องการขยับส่วนเหล่านั้น ให้เปลี่ยน "Face Tracking" ในโหมดสตรีมมิ่งเป็น VRCFaceTracking แล้วรองรับผ่าน FX Layer ฝั่งอวาตาร์
วิธีค้นหา target (ชื่อ BlendShapes ของสีหน้า)
ใน target ให้เขียนชื่อ BlendShapes ของสีหน้าที่มีอยู่จริงในอวาตาร์ตามที่เป็น ชื่ออาจแตกต่างกันมากขึ้นอยู่กับผู้สร้างและกฎการตั้งชื่อ จึงต้องตรวจสอบล่วงหน้า
วิธี A: ตรวจสอบใน Unity (ก่อนการ Export)
- เปิดอวาตาร์ใน Unity
- เลือก Mesh ของใบหน้า (ส่วนใหญ่คือ
BodyหรือFace) จาก Hierarchy - ขยาย SkinnedMeshRenderer → BlendShapes ใน Inspector
- ชื่อที่แสดงสามารถใช้เป็น
targetได้โดยตรง และชื่อ GameObject ที่เลือกนั้นจะใช้เป็นrenderer
วิธี B: ตรวจสอบจาก Log ของ Viewer
เมื่อชื่อ target หรือ renderer ไม่ถูกต้อง Viewer จะแสดง Log คำเตือน วิธีที่ใช้งานได้จริงคือสร้างโปรไฟล์ด้วยชื่อชั่วคราวแล้วโหลด จากนั้นดู Log และแก้ไขเป็นชื่อที่ถูกต้อง
ปรับความเข้มด้วย min_weight / max_weight
ความแรงของสีหน้าที่ได้รับ (0.0〜1.0) จะถูกแทรกเชิงเส้นระหว่าง min_weight และ max_weight แล้วสะท้อนไปยัง BlendShapes ของสีหน้า เมื่อละเว้นจะเป็น 0 〜 100 (เคลื่อนไหวได้ถึง 100%)
# 笑顔を少し控えめにしたい
[[expressions]]
source = "Joy"
target = "face_happy"
renderer = "Body"
max_weight = 60
# 常に少しだけ口角を上げておきたい(下駄を履かせる)
[[expressions]]
source = "neutral"
target = "face_smile_slight"
renderer = "Body"
min_weight = 20
max_weight = 40
- แม้ฝั่งรับสัญญาณจะเป็น 0 ก็ยังใช้ค่า
min_weightดังนั้นสามารถใช้เป็นค่า "offset" ที่ทำงานตลอดเวลาได้ - เมื่อสีหน้าเคลื่อนไหวรุนแรงเกินไป วิธีที่ได้ผลดีที่สุดคือลด
max_weightลงก่อน
ข้อควรระวังเมื่อละเว้น renderer
หากไม่ระบุ renderer ระบบจะตรวจสอบ SkinnedMeshRenderer ทั้งหมดในอวาตาร์ตามลำดับ และนำไปใช้กับตัวแรกที่มี BlendShapes ของสีหน้าที่ระบุใน target
พฤติกรรมนี้สะดวก แต่หาก Mesh อื่น เช่น ชุดหรือผม มี BlendShapes ชื่อเดียวกัน อาจทำให้ Mesh ที่ไม่ต้องการเคลื่อนไหวได้ โดยพื้นฐานแนะนำให้ระบุ renderer อย่างชัดเจน
เลือกและนำไปใช้ใน Viewer
- แสดงอวาตาร์ใน VRC Avatar Viewer
- เปิด โหมดสตรีมมิ่ง บนทูลบาร์
- กดปุ่มเลือกใน "อวาตาร์โปรไฟล์" แล้วเลือกโปรไฟล์ที่ต้องการจากรายการ
- เปิดการรับสัญญาณ VMC แล้ว BlendShapes ของสีหน้าที่ map ไว้จะเคลื่อนไหว

- หากสลับโปรไฟล์ระหว่างรับสัญญาณ VMC จะทำการ binding ใหม่โดยอัตโนมัติ ไม่จำเป็นต้องหยุดหรือรีสตาร์ท
- หากเลือก ไม่มี จะกลับไปใช้การกำหนดอัตโนมัติแบบเดิมโดยไม่ใช้โปรไฟล์
- หลังจากแก้ไขไฟล์ ให้สลับไปโปรไฟล์อื่นแล้วกลับมา การเปลี่ยนแปลงจะถูกนำไปใช้
การแก้ไขปัญหา
-
ไม่มีผลใดๆ เลย
สาเหตุหลักคือสะกด
sourceผิด ชื่อ BlendShapes ของtargetไม่มีอยู่จริง หรือชื่อrendererไม่ตรง กรุณาตรวจสอบชื่อที่ถูกต้องด้วยวิธี A ใน Step 4 -
Mesh ที่ผิดเคลื่อนไหว
หากละเว้น
rendererอาจไปโดน Mesh อื่นที่มี BlendShapes ชื่อเดียวกัน กรุณาระบุrendererอย่างชัดเจน -
สีหน้าแรงเกินไป / อ่อนเกินไป
ปรับค่าขั้นสูงด้วย
max_weightและค่า offset ตลอดเวลาด้วยmin_weight -
ต้องการขยับ BlendShapes หลายรายการด้วยสีหน้าเดียว
เขียนบล็อก
[[expressions]]หลายบล็อกที่มีsourceเดียวกัน จะเคลื่อนไหวพร้อมกัน -
ไม่แสดงในรายการโปรไฟล์
ตรวจสอบว่านามสกุลเป็น
.tomlและวางไฟล์ไว้ในโฟลเดอร์avatar_profilesโดยตรง ไฟล์ชื่อsample.tomlจะถูกยกเว้นจากรายการ