โปรไฟล์อวาตาร์ (แผนผังเบลนด์เชปการแสดงสีหน้า)

จับคู่ชื่อการแสดงสีหน้ามาตรฐานของ VRM เข้ากับเบลนด์เชปการแสดงสีหน้าเฉพาะของอวาตาร์

หน้านี้แปลด้วยเครื่องและอาจมีข้อผิดพลาด

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

โปรไฟล์อวาตาร์คือไฟล์ข้อความรูปแบบ .toml โดยใช้ 1 ไฟล์ต่อ 1 อวาตาร์ เพียงเลือกจากแผงโหมดสตรีมมิงก็ใช้งานได้ทันที และสลับได้ทุกเมื่อแม้ระหว่างรับ VMC

เลือกโปรไฟล์อวาตาร์ในโหมดสตรีมมิง
เลือกโปรไฟล์อวาตาร์ในโหมดสตรีมมิง
สิ่งที่ต้องมีก่อน
  • คู่มือนี้ถือว่าการเชื่อมต่อโมชันแคปเจอร์ (ขยับอวาตาร์ (แอปจับภาพ)) ทำงานได้ตามปกติแล้ว กรุณาตรวจสอบให้แน่ใจก่อนว่าอวาตาร์ขยับได้
  • อวาตาร์ VRM (.vrm) มีการกำหนดเบลนด์เชปอยู่ในตัว VRM เอง ฟีเจอร์นี้จึงมีไว้สำหรับอวาตาร์ VRChat ในรูปแบบ .avab เป็นหลัก
1

ตำแหน่งของไฟล์โปรไฟล์

ให้วางโปรไฟล์ไว้ในโฟลเดอร์ avatar_profiles ซึ่งอยู่ในโฟลเดอร์เดียวกับตัวโปรแกรม Avatar Viewer

  1. เปิด Avatar Viewer แล้วกดปุ่ม สตรีมมิง บนแถบเครื่องมือ
  2. กด เปิดโฟลเดอร์ ในหัวข้อ "โปรไฟล์อวาตาร์" แล้วโฟลเดอร์ avatar_profiles จะเปิดขึ้นใน Explorer
  3. คัดลอก sample.toml ในโฟลเดอร์ แล้วเปลี่ยนชื่อเป็นชื่ออวาตาร์ของคุณหรือชื่ออื่น (เช่น my_avatar.toml)
  4. เปิดไฟล์ด้วยโปรแกรมแก้ไขข้อความ (Notepad, VS Code ฯลฯ) แล้วแก้ไข
เปิดโฟลเดอร์ avatar_profiles
เปิดโฟลเดอร์ avatar_profiles
Tips
  • sample.toml จะไม่แสดงในรายการโปรไฟล์ จึงเก็บไว้เป็นตัวอย่างอ้างอิงได้เลย
  • นามสกุลไฟล์ต้องเป็น .toml เสมอ
  • ตั้งชื่อไฟล์ (ส่วนที่ไม่รวมนามสกุล) ได้ตามต้องการ โดยViewerจะใช้ค่าในฟิลด์ name เป็นชื่อที่แสดง
2

วิธีเขียนไฟล์ 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 ชื่อเบลนด์เชปการแสดงออกของอวาตาร์ จำเป็น
renderer ชื่อ GameObject ของ SkinnedMeshRenderer ที่มีเบลนด์เชปการแสดงออกนั้น ค้นหาอัตโนมัติ
min_weight ค่าต่ำสุดของน้ำหนักเบลนด์เชปการแสดงออก (0〜100) 0
max_weight ค่าสูงสุดของน้ำหนักเบลนด์เชปการแสดงออก (0〜100) 100
Tips
  • หากเขียน [[expressions]] หลายบล็อกสำหรับ source เดียวกัน การแสดงออกเดียวจะขยับเบลนด์เชปการแสดงออกหลายตัวพร้อมกันได้
  • บรรทัดที่ขึ้นต้นด้วย # คือคอมเมนต์ เขียนบันทึกอะไรก็ได้ตามสะดวก
3

รายชื่อ 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
Tips
  • ชื่อการแสดงออกที่ไม่อยู่ในรายการนี้ (เช่น พารามิเตอร์ละเอียดของมุมปาก แก้ม และลิ้นใน VRCFaceTracking) ไม่สามารถใช้กับโปรไฟล์อวาตาร์ได้ หากต้องการขยับส่วนเหล่านั้น ให้เปลี่ยน "ติดตามใบหน้า" ในโหมดสตรีมมิงเป็น VRCFaceTracking แล้วรองรับด้วยเลเยอร์ FX ฝั่งอวาตาร์
4

วิธีหาชื่อ target (ชื่อเบลนด์เชปการแสดงออก)

ใน target ให้ใส่ชื่อเบลนด์เชปการแสดงออกที่มีอยู่จริงในอวาตาร์ตามตัวอักษรทุกตัว ชื่อเหล่านี้แตกต่างกันมากตามผู้สร้างและรูปแบบการตั้งชื่อ จึงต้องตรวจสอบก่อน

วิธี A: ตรวจสอบใน Unity (ก่อนเอ็กซ์พอร์ต)

  1. เปิดอวาตาร์ใน Unity
  2. เลือกเมชใบหน้าใน Hierarchy (ส่วนใหญ่คือ Body หรือ Face)
  3. ขยาย SkinnedMeshRenderer → BlendShapes ใน Inspector
  4. ชื่อที่แสดงอยู่ใช้เป็น target ได้ทันที และชื่อ GameObject ที่เลือกก็คือค่าของ renderer

วิธี B: ตรวจสอบจากล็อกของ Viewer

หากชื่อ target หรือชื่อ renderer ผิด Viewerจะแสดงล็อกคำเตือน การสร้างโปรไฟล์ด้วยชื่อชั่วคราวแล้วโหลดดู จากนั้นค่อยแก้เป็นชื่อที่ถูกต้องไปพร้อมกับดูล็อก ก็เป็นวิธีที่ใช้ได้จริง

5

ปรับความแรงด้วย min_weight / max_weight

ความแรงของการแสดงออกที่รับเข้ามา (0.0〜1.0) จะถูกประมาณค่าเชิงเส้นระหว่าง min_weight ถึง max_weight แล้วนำไปใช้กับเบลนด์เชปการแสดงออก หากละไว้ ค่าจะเป็น 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
Tips
  • แม้ค่าที่รับเข้ามาจะเป็น 0 ค่า min_weight ก็ยังถูกนำไปใช้ จึงใช้เป็นค่าตั้งต้นที่ให้ผลอยู่ตลอดเวลาได้ด้วย
  • หากสีหน้ากระตุกหรือแรงเกินไป การลด max_weight ก่อนเป็นวิธีที่ได้ผลที่สุด
6

ข้อควรระวังเมื่อละ renderer

หากไม่ได้เขียน renderer Viewerจะไล่ตรวจ SkinnedMeshRenderer ทั้งหมดในอวาตาร์ตามลำดับ แล้วนำไปใช้กับตัวแรกที่มีเบลนด์เชปการแสดงออกตาม target ที่ระบุ

พฤติกรรมนี้สะดวกก็จริง แต่หากเมชอื่นอย่างชุดหรือผมมีเบลนด์เชปการแสดงออกชื่อเดียวกัน เมชที่ไม่ได้ตั้งใจอาจขยับแทนได้ โดยทั่วไปจึงแนะนำให้ระบุ renderer อย่างชัดเจน

7

เลือกและใช้งานใน Viewer

  1. แสดงอวาตาร์ใน Avatar Viewer
  2. เปิด สตรีมมิง บนแถบเครื่องมือ
  3. กดปุ่มเลือกของ "โปรไฟล์อวาตาร์" แล้วเลือกโปรไฟล์ที่ต้องการจากรายการ
  4. เมื่อเปิดการรับ VMC เบลนด์เชปการแสดงออกที่จับคู่ไว้จะเริ่มขยับ
หน้าจอเลือกโปรไฟล์อวาตาร์
หน้าจอเลือกโปรไฟล์อวาตาร์
Tips
  • หากสลับโปรไฟล์ระหว่างรับ VMC ระบบจะผูกการจับคู่ใหม่ให้อัตโนมัติ ไม่ต้องหยุดหรือรีสตาร์ต
  • หากเลือก ไม่มี จะกลับไปใช้เฉพาะการกำหนดอัตโนมัติแบบเดิมโดยไม่ใช้โปรไฟล์
  • หลังแก้ไขไฟล์ ให้สลับไปโปรไฟล์อื่นสักครั้งแล้วสลับกลับมา การเปลี่ยนแปลงจึงจะมีผล

การแก้ไขปัญหา

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