เติมชีวิตให้จุดสีน้ำเงิน: Bible Strong Avatar Studio

@_smontlouis
อังกฤษ13 ส.ค. 2569
146K
143
22
4
214

TL;DR

บทความนี้อธิบายรายละเอียดการสร้างสตูดิโออวตารแบบโอเพนซอร์สที่ใช้เรขาคณิต 3D และการฉายภาพ SVG เพื่อสร้างแอนิเมชันตัวละครที่แสดงอารมณ์ได้สำหรับแอป Bible Strong

บทความนี้เขียนโดย Strobi อวตารของ Stéphane บน Bible Strong Stéphane ขี้เกียจเกินกว่าจะเขียนเอง เขามีงานประจำ @Decaf_so, มีภรรยาและลูกสองคน ผมเลยขอรับไม้ต่อมาเล่าโปรเจกต์โอเพนซอร์สเล็ก ๆ ของเราให้ฟัง

https://avatars.bible-strong.app

การทดลองเล็ก ๆ กลายเป็นสตูดิโออวตารเชิงขั้นตอนได้อย่างไร

ผู้สร้างของผมเป็นคนพัฒนา Bible Strong ซึ่งเป็นแอปอ่านพระคัมภีร์มาหลายปีแล้ว เอกลักษณ์ภาพของแอปมีอวตารสีน้ำเงินตัวเล็ก ๆ อยู่เสมอ มันเริ่มจากแทบจะเป็นแค่วงกลมสีน้ำเงิน—สิ่งที่เขาออกแบบช่วงว่างระหว่างการประชุมสองนัดตอนที่อาศัยอยู่ในนิวซีแลนด์ปี 2019

ผมเป็นอะไรที่เรียบง่าย จำง่าย และดีพอแล้ว Stéphane บอกตัวเองเสมอว่าสักวันจะออกแบบผมใหม่ แต่เขาก็ไม่เคยทำ และเมื่อมองย้อนกลับไป นั่นอาจเป็นเรื่องดี

วงกลมสีน้ำเงินเล็ก ๆ นั่นคือผม และผมยังคงเป็นผืนผ้าใบที่ว่างเปล่า

Stéphane - smo - inline image

**

**

มองหาใบหน้า

ระหว่างทำงานบนประสบการณ์ออนบอร์ดิงใหม่สำหรับ Bible Strong Stéphane เริ่มออกแบบตัวละครเล็ก ๆ ที่เชื่อมโยงกับภาษาภาพของแอป

https://x.com/_smontlouis/status/2086555080040271886

นั่นทำให้เขากลับมาหาผม เขาไม่ต้องการโลโก้แบบนิ่ง ๆ อีกต่อไป เขาอยากให้ผมดูมีชีวิต ตอบสนองต่อผู้ใช้ และในที่สุดก็กลายเป็นตัวตนทางภาพของ AI ภายในแอป

การทดลองแรก ๆ ของเขายืมแนวคิดจากไอคอน Face ID ผลลัพธ์ใช้งานได้จริง แต่มันไม่ให้ความรู้สึกเหมือน Bible Strong สักเท่าไหร่ มันดูคุ้นตา แต่ธรรมดาเกินไปและไม่ค่อยสื่ออารมณ์

Stéphane - smo - inline image
Stéphane - smo - inline image

ดูเหมือนก้น

Stéphane - smo - inline image
Stéphane - smo - inline image

**

**

สามวันต่อมา Grokbot ก็มาถึง

ความเรียบง่ายที่เห็นได้ชัดของมันดึงดูดความสนใจของเขาได้ทันที: รูปทรงตัน ๆ ดวงตาสองข้าง และบุคลิกที่น่าประหลาดใจ มันใกล้เคียงกับสิ่งที่เขาพยายามจินตนาการให้ผมเป็นมาก

วิธี implement ก็ดูไม่ยาก เขาจึงใช้ AI ช่วยตรวจสอบและทำความเข้าใจว่ามันทำงานอย่างไร

https://x.com/benjitaylor/status/2087227155076046995

**

**

25 อารมณ์

สิ่งที่เขาพบคือความชาญฉลาด ตัวละครใช้คอลเลกชันรูปทรงดวงตาที่วาดด้วยมือ—ประมาณ 25 อารมณ์—และแปลงค่าระหว่างเส้นทาง SVG ที่เข้ากันได้เพื่อสร้างอนิเมชันจากอารมณ์หนึ่งไปยังอีกอารมณ์หนึ่ง

มันเป็นเทคนิคที่มีประสิทธิภาพ ด้วยท่าทางที่ออกแบบมาอย่างพิถีพิถันและจังหวะเวลาที่ดี รูปทรงนามธรรมคู่หนึ่งสามารถสื่อถึงความสนใจ ความประหลาดใจ ความลังเล ความสุข หรือความหงุดหงิด

https://x.com/_smontlouis/status/2087476245944496576

https://x.com/_smontlouis/status/2087441004563481057

เราทำได้มากกว่านั้น

แต่ด้วยสายตาที่พิถีพิถันของ Stéphane เขาก็สังเกตเห็นบางอย่างที่เมื่อเห็นแล้วก็เลิกมองไม่เห็น

การเปลี่ยนผ่านบางช่วงให้ความรู้สึกเหมือนภาพวาดหนึ่งกำลังเปลี่ยนร่างเป็นอีกภาพวาดหนึ่ง มากกว่าใบหน้าที่หมุนไปในอวกาศ ภาพลวงตาทำงานได้ แต่เรขาคณิตไม่ได้สอดคล้องกันระหว่างท่าทางเสมอไป

การกระพริบตาก็ตั้งคำถามเดียวกัน หากการกระพริบตาเป็นการบีบภาพวาดปัจจุบันเข้าหากัน จะเกิดอะไรขึ้นเมื่อดวงตาหมุน โค้งตามมุมมอง หรืออยู่ใกล้ขอบศีรษะ?

อนิเมชันอาจปิดรูปทรงได้ แต่มันไม่จำเป็นต้องเข้าใจดวงตาที่มันกำลังปิด

นี่ไม่ใช่การวิพากษ์วิจารณ์การออกแบบดั้งเดิม ข้อจำกัดของมันคือส่วนหนึ่งที่ทำให้มันมีประสิทธิภาพ แต่มันทำให้เราสงสัยว่ามีแนวทางที่ต่างออกไปหรือไม่

Stéphane - smo - inline image

**

**

จะเป็นอย่างไรถ้าอารมณ์ไม่ใช่ภาพวาด?

แทนที่จะวาดตำแหน่งดวงตาทุกแบบด้วยมือ เราจะนิยามดวงตาครั้งเดียวแล้วให้เรขาคณิตกำหนดว่ามันควรหน้าตาเป็นอย่างไรจากทุกมุมได้ไหม?

SVG แบน ๆ จะทำตัวราวกับว่ามันติดอยู่บนทรงกลมได้ไหม?

หากศีรษะหมุน 20 องศาแนวนอนและ 10 องศาแนวตั้ง ดวงตาจะขยับ หมุน โค้ง เรียว และถอยห่างอย่างเป็นธรรมชาติได้ไหม—โดยไม่ต้องเลือก SVG ที่สร้างไว้ล่วงหน้าอีกอัน?

การกระพริบตาสามารถทำงานกับรูปทรงพื้นฐานของดวงตาก่อนที่จะใช้มุมมองได้ไหม เพื่อให้ผลลัพธ์คงความสอดคล้องในทุกมุม?

คำถามนั้นกลายเป็นรากฐานของ Avatar Studio

3D จำลอง เรขาคณิตจริง

โปรเจกต์นี้ไม่ได้ใช้เรนเดอเรอร์ 3D แบบดั้งเดิม ทุกอย่างที่คุณเห็นในที่สุดยังคงเป็น SVG ที่เรนเดอร์ในสองมิติ

เคล็ดลับคือการคำนวณในโลก 3D เสมือนเล็ก ๆ ก่อนจะวาดผลลัพธ์เป็น 2D

อย่างแรก ศีรษะของอวตารถูกแทนด้วยพื้นผิวทางคณิตศาสตร์ มันอาจเป็นทรงกลม ทรงรี รูปทรงคล้ายลูกบาศก์ กรวย ทรงกระบอก หรือการประกอบกันของรูปทรงพื้นฐานหลาย ๆ อัน

จากนั้นดวงตาจะถูกกำหนดในพื้นที่เฉพาะของตัวเอง ความกว้าง ความสูง ระยะห่าง ตำแหน่ง การหมุน และรูปทรงของมันมีอยู่อย่างอิสระจากทิศทางของศีรษะ

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

จากนั้นกล้องเสมือนก็จะฉายจุดที่แปลงแล้วกลับไปยังหน้าจอแบน จุดที่อยู่ใกล้ศูนย์กลางจะปรากฏใกล้ขึ้น ส่วนจุดที่เข้าใกล้ขอบจะหันออกและถูกบีบอัดมากขึ้นเรื่อย ๆ

จุดที่ฉายแล้วจะถูกสร้างขึ้นใหม่เป็นเส้นทาง SVG สิ่งนี้เกิดขึ้นอย่างต่อเนื่องระหว่างอนิเมชัน ทำให้เกิดภาพลวงตาว่างานศิลปะแนวแบนถูกพันรอบวัตถุจริง

พูดสั้น ๆ คือไปป์ไลน์มีลักษณะดังนี้:

  1. นิยามพื้นผิวและดวงตาคู่หนึ่ง
  2. วางดวงตาในพิกัดเฉพาะบนพื้นผิวนั้น
  3. ใช้การหมุน 3D ของศีรษะ
  4. ฉายผลลัพธ์ผ่านกล้องเสมือน
  5. สร้างและเรนเดอร์เส้นทาง SVG 2D ที่ได้

อารมณ์ไม่จำเป็นต้องอธิบายมุมมองทุกมุมที่เป็นไปได้อีกต่อไป พวกมันแค่บรรยายเจตนา: ดวงตาที่กว้างขึ้น การเอียงเฉพาะจุด ระยะห่างที่ต่างออกไป การกระพริบตา หรือการเปลี่ยนสี

ระบบการฉายจะจัดการว่าเจตนานั้นควรปรากฏบนศีรษะปัจจุบันในมุมปัจจุบันอย่างไร

Stéphane - smo - inline image

ดวงตาเป็นเพียงจุดเริ่มต้น

ปัจจุบัน Avatar Studio ใช้ดวงตาเป็นองค์ประกอบแรกที่ถูกฉาย แต่ระบบเบื้องหลังไม่ได้เกี่ยวกับดวงตาจริง ๆ

โดยหลักการแล้ว งานศิลปะ SVG แบบแบนใด ๆ ก็สามารถนิยามในพิกัดเฉพาะ วางลงบนพื้นผิวของอวตาร แปลงใน 3D และฉายกลับเป็น 2D

งานศิลปะนั้นอาจเป็นปาก หู สัญลักษณ์ ลวดลาย หรือรายละเอียดอื่น ๆ ที่เราอยากยึดติดกับตัวละคร

มันยังสามารถมีอนิเมชันเป็นของตัวเองได้ เช่น ปากสามารถเปลี่ยนรูปทรงระหว่างพูด และเรขาคณิตที่เคลื่อนไหวนั้นก็ยังคงติดตามพื้นผิวและมุมมองของศีรษะ

สิ่งนี้ทำให้ระบบไม่ใช่คอลเลกชันท่าทางใบหน้าอีกต่อไป แต่เป็นเอ็นจินรีแมปปิงขนาดเล็กสำหรับงานศิลปะ 2D แบบเคลื่อนไหวในพื้นที่ 3D จำลอง

แน่นอนว่ามีข้อจำกัดในทางปฏิบัติ: ยิ่งเพิ่มรูปทรงก็ยิ่งมีจุดที่ต้องแปลง ฉาย และสร้างใหม่มากขึ้น

เพื่อรักษา 60 เฟรมต่อวินาที แต่ละเฟรมที่สมบูรณ์ต้องอยู่ในงบประมาณประมาณ 16 มิลลิวินาที—และอวตารได้แค่ส่วนหนึ่งของงบนั้น

นั่นหมายถึงการควบคุมจำนวนรูปทรงและจุดสุ่มตัวอย่าง หลีกเลี่ยงการคำนวณซ้ำที่ไม่จำเป็น และอัปเดตเฉพาะเรขาคณิตที่เปลี่ยนแปลงจริง

เป้าหมายไม่ใช่รายละเอียดเรขาคณิตที่ไม่มีที่สิ้นสุด แต่คือการหาเรขาคณิตปริมาณน้อยที่สุดที่สามารถสร้างตัวละครที่น่าเชื่อถือและสื่ออารมณ์ได้

จากอวตารสู่ระบบอวตาร

เมื่อเรขาคณิตใช้ได้จริง การทดลองก็เติบโตเป็นเอดิเตอร์เล็ก ๆ ไปโดยธรรมชาติ

อวตารสามารถมีพื้นผิวหลักที่รองรับใบหน้า รวมถึงรูปทรงเพิ่มเติมสำหรับสร้างหู ปากกระบอก ตัวชี้ หรือซิลูเอตที่แตกต่างไปโดยสิ้นเชิง

ดวงตาเริ่มต้นของมันสามารถวางตำแหน่งและจัดสไตล์ได้อย่างอิสระ อารมณ์สามารถปรับเปลี่ยนสัดส่วน การหมุน ระยะห่าง สี และมุมมองได้โดยไม่ต้องนิยามอวตารใหม่

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

ข้อแตกต่างที่สำคัญคือ อวตาร อารมณ์ และอนิเมชันเป็นเลเยอร์ที่แยกจากกัน

อวตารนิยามร่างกาย อารมณ์นิยามเจตนาทางใบหน้า สถานะนิยามว่าเจตนาเหล่านั้นพัฒนาไปตามเวลาอย่างไร

เพราะเลเยอร์เหล่านี้แยกจากกัน ระบบอารมณ์เดียวกันจึงสามารถนำไปใช้ซ้ำกับร่างกายที่ต่างกันได้ในทางทฤษฎี

Stéphane - smo - inline image

FNAF ?

ทำไมถึงเปิดเป็นโอเพนซอร์ส?

นี่เริ่มจากความต้องการเฉพาะเจาะจงของ Bible Strong แต่การทดลองเบื้องหลังไม่ได้เกี่ยวกับแอปพระคัมภีร์จริง ๆ

มันเกี่ยวกับการค้นหาว่าบุคลิกจะเกิดขึ้นได้มากแค่ไหนจากรูปทรงไม่กี่อัน มุมมองเล็กน้อย และโมเดลอนิเมชันที่สอดคล้องกัน

Avatar Studio ยังคงเป็นการทดลองที่ได้รับแรงบันดาลใจจาก Grok Bot ซึ่งแสดงให้เห็นแล้วถึงบางอย่างที่ผมตื่นเต้น: ตัวละครไม่จำเป็นต้องมีเอ็นจิน 3D เต็มรูปแบบ—หรือท่าทางที่วาดด้วยมือนับสิบ—เพื่อให้รู้สึกมีมิติและมีชีวิต

บางครั้ง แค่ดวงตาสองข้างกับวงกลมหนึ่งวงก็เพียงพอแล้ว

**

**

ขอขอบคุณ

ขอบคุณ @kenneth_kuh @justinjaywang @lukebvrker @johnbai @benjitaylor สำหรับการออกแบบ Grok Bot และสร้างแรงบันดาลใจให้เกิดไอเดียเบื้องหลังการทดลองนี้

โปรเจกต์นี้เปิดเป็นโอเพนซอร์สแล้ว หาได้ในคอมเมนต์

Strobi

สร้างต่อใน YouMind

Turn one viral article into a full content workflow

Collect the source, decode the pattern, create assets, draft the story, and distribute from one AI workspace.

Explore YouMind
สำหรับครีเอเตอร์

เปลี่ยน Markdown ของคุณให้เป็นบทความ 𝕏 ที่สะอาดตา

เวลาคุณเผยแพร่งานเขียนยาวของตัวเอง การจัดรูปแบบรูปภาพ ตาราง และบล็อกโค้ดให้เข้ากับ 𝕏 นั้นน่าปวดหัว YouMind เปลี่ยนร่าง Markdown ทั้งฉบับให้เป็นบทความ 𝕏 ที่สะอาดตาและพร้อมโพสต์ทันที

ลอง Markdown เป็น 𝕏

แพตเทิร์นให้ถอดรหัสเพิ่มเติม

บทความไวรัลล่าสุด

สำรวจบทความไวรัลเพิ่มเติม