ข้ามไปยังเนื้อหา

แอนิเมชันเปิด–ปิดและการตรวจการชน

Course 3 · Module 3
Suggested time: ประมาณ 3 ชั่วโมง — สร้างภาพเคลื่อนไหวเปิด–ปิดชิ้นส่วน ตรวจการชน และตั้งชื่อคลิปให้พร้อมใช้กับ Twin
Format: บทเรียนลงมือทำ — อ่านแล้วทำตามใน Blender ได้เลย; การส่งออก GLB ไป Twin อยู่ที่ M04

Lab · Clip list · ← Table of Contents · ← M02 · M04 →


เมื่อเรียนจบ คุณควรทำได้ดังนี้:

  1. สร้างภาพเคลื่อนไหวสำหรับเปิด–ปิดชิ้นส่วนหรือแสดงโครงสร้างภายใน
  2. จำลองการเคลื่อนไหวเพื่อประเมินความเหมาะสมในการใช้งาน (ชิ้นส่วนไม่ทะลุกัน)
  3. สร้างชุดลำดับการเคลื่อนไหว (named clips / actions) สำหรับ Twin หรือสื่อการสอน

Key phrase
Animation ใน M03 คือเครื่องมือตรวจกลไก ไม่ใช่แค่ทำให้ดูสวย — ถ้าฝาเปิดแล้วทะลุฐาน แสดงว่าดีไซน์ยังไม่พร้อมพิมพ์

Course M03 focus
Course 2 M03 Virtual Device · sensor script · event simulation
Course 3 M03 (this module) Animation ของผลิตภัณฑ์ใน Blender (เปิดฝา / หมุนชิ้นส่วน / คลิปสั้น)
Document Use when
M02 — Modeling, Materials, Render ต้องมี Enclosure_lid / Enclosure_base แยกชิ้นแล้ว
Insert / edit keyframes กด I ใส่คีย์เฟรม
Timeline เล่น / เลื่อนเฟรม / Auto Key
Actions เก็บแอนิเมชันเป็น Action ตั้งชื่อได้
Dope Sheet จัดคีย์เฟรมทั้งคลิป
Graph Editor ปรับความนุ่มของ motion (optional)
Set Origin จุดหมุนของฝา (บานพับ)
Parenting (ทางเลือก) ผูกชิ้นส่วนกับฝา
glTF Animations เตรียมชื่อคลิปให้ export ใน M04
Blender Fundamentals — Animation วิดีโอทางการ (เลือกบท Animation)
INC111-2021 (Thai) Tutorial ภาษาไทย
Clip list worksheet บันทึกชื่อคลิป ความยาว แกนหมุน

ภาพเคลื่อนไหวในงาน enclosure ช่วยตอบคำถามที่ภาพนิ่งตอบไม่ครบ:

Question What motion shows
เปิดฝาแล้วมือหรือสายชนไหม? เส้นทางหมุนของฝา
ช่องภายในพอใส่ PCB / แบตเตอรี่ไหม? เปิดฝาแล้วเห็นช่องว่าง
ผู้ใช้เข้าใจวิธีเปิดอย่างไร? คลิปสั้นสำหรับสื่อการสอน
Twin จะเล่นสถานะอะไรได้บ้าง? ชื่อคลิป เช่น lid_open

ในระยะแรกของคอร์สนี้ ใช้คีย์เฟรมของ Location / Rotation เป็นหลัก
Armature (กระดูก) เก็บไว้เมื่อกลไกซับซ้อนจริง ๆ — ส่วนใหญ่ฝากล่องหมุนรอบขอบด้านหลังก็พอ


จาก M02 คุณควรมี object แยกแล้ว เช่น Enclosure_lid และ Enclosure_base

จุด Origin ของฝา = จุดหมุน (Set Origin)

ขั้นตอนที่แนะนำ:

  1. เลือก Enclosure_lid
  2. เข้า Edit Mode · เลือกขอบหรือจุดที่ต้องการเป็นบานพับ (มักเป็นขอบหลังด้านใน)
  3. Shift+S → Cursor to Selected
  4. Object Mode → Object → Set Origin → Origin to 3D Cursor
  5. กลับ Cursor ไปที่ World Origin ถ้าต้องการ (Shift+S → Cursor to World Origin)

ทดสอบ: กด R แล้วหมุนรอบแกนที่ถูกต้อง (มักเป็น X หรือ Y ตามทิศวางโมเดล) — ฝาควรเปิดเหมือนบานพับ ไม่ลอยไปทั้งก้อน

ก่อนใส่คีย์เฟรม:

  • Ctrl+A → Rotation & Scale บนฝา (และฐานถ้าจำเป็น)
  • อ่าน Apply

ถ้า Rotation ในแผง Item ไม่เป็นศูนย์ทั้งที่ฝาดูตรง อาจสับสนตอนใส่คีย์ — Apply ช่วยให้ค่าเริ่มต้นอ่านง่าย


อ้างอิงตัวอย่างอย่างเป็นทางการใน Editing Keyframes และควบคุมเวลาด้วย Timeline

Setting Lab default Where
Frame rate 24 fps หรือ 30 fps (ทีมเดียวกัน) Output Properties
Clip length 1–3 วินาที ต่อคลิป เช่น 24–72 เฟรมที่ 24 fps
Scene End ให้ยาวพอเล่นคลิป Timeline Start/End

ตัวอย่างคลิป lid_open ที่ 24 fps ความยาว 1.5 วินาที ≈ เฟรม 1 → 36

  1. ไปเฟรม 1 (ฝาปิด)
  2. เลือก Enclosure_lid
  3. กด I → เลือก Rotation (หรือ LocRot ถ้าต้องขยับด้วย)
  4. ไปเฟรมปลายคลิป (เช่น 36)
  5. หมุนฝาเปิดในมุมที่ใช้งานจริง (เช่น 90° หรือ 110°)
  6. กด I → Rotation อีกครั้ง
  7. กด Space (หรือปุ่ม Play ใน Timeline) เพื่อเล่น

ถ้าอยากให้ Blender ใส่คีย์อัตโนมัติขณะหมุน: เปิด Auto Key ใน Timeline (Timeline) — จำไว้ว่าเปิดแล้วทุกการขยับจะติดคีย์

สร้างคลิปปิดแยก หรือต่อในช่วงเฟรมถัดไป:

  • เฟรม 36 = เปิด
  • เฟรม 72 = ปิด (คัดลอกค่า rotation จากเฟรม 1)

สำหรับ Twin มักแยกชื่อชัดกว่า: lid_open และ lid_close

Animation ใน Blender ถูกเก็บใน Action (Actions)

  1. เปิด Dope Sheet → โหมด Action (หรือแผง Action ใน Animation workspace)
  2. ตั้งชื่อ Action เป็นภาษาอังกฤษสั้น เช่น lid_open
  3. หลีกเลี่ยงชื่อว่าง / ชื่อซ้ำ / ภาษาไทยในชื่อไฟล์คลิปที่ส่ง Twin

ชื่อที่ดี:

Good name Avoid
lid_open Anim1, asdf, เปิดฝา
lid_close final_final2
battery_reveal ชื่อยาวมีช่องว่างเยอะ

จดทุคลิปใน animation-clip-list.md


เล่นแอนิเมชันช้า ๆ แล้วตรวจ:

Check Pass means
Lid vs base ไม่ทะลุกันรุนแรงตรงบานพับ
Lid vs tall components ไม่ชนหัว USB / เซ็นเซอร์ / จอ
Cable / finger space (concept) มีช่องให้จินตนาการมือเปิดได้
Extreme angle มุมเปิดไม่เกินที่กลไกจริงทำได้

ถ้าชน:

  1. เลื่อนบานพับ (Origin)
  2. ลดมุมเปิด
  3. หรือกลับไปแก้รูปทรงใน M02 (ระยะห่างผนัง / ความสูงชิ้นส่วน)

Key phrase
Motion ที่ชน = บั๊กดีไซน์ ที่จับได้ถูกกว่าตอนพิมพ์แล้วค่อยรู้

ไม่จำเป็นต้องเปิด Physics simulation ใน M03 — การดูด้วยตา + Wireframe ก็เพียงพอสำหรับแล็บ


Motion idea Typical keys Twin / teaching use
เปิด–ปิดฝา Rotation on hinge หลักของแล็บนี้
เผย PCB ภายใน Lid open + camera hold สื่อการสอนโครงสร้าง
ถอดแบตเตอรี่ (แนวคิด) Location ของ Battery_block แสดงช่องบริการ
สถานะ LED / ชิ้นหมุน Rotation เล็กน้อยหรือ Emission (จาก M02) demo สถานะทำงาน

เลือกอย่างน้อย หนึ่งชุดเปิด/ปิด ให้ผ่านเกณฑ์ — ส่วนอื่นเป็นงานต่อยอด


Guideline Why
1–3 วินาทีต่อคลิป จัดการง่าย · export เบา · ผู้ชมเข้าใจจุดเดียว
หนึ่งคลิป = หนึ่งเจตนา lid_open ไม่ปนการหมุนกล้องยาว
ชื่อคงที่ทั้งทีม M04 / Bitstream Studio อ้างชื่อเดียวกัน

ตาม glTF Animations:

  • แอนิเมชันที่ export ได้ดีคือ keyframe ของ transform (และบางกรณี shape keys)
  • ถ้ามีหลาย Action ที่จะส่งออก มักต้อง Stash ลง NLA ตามโหมด export
  • ชื่อ track / action มีผลต่อชื่อคลิปในไฟล์ GLB

ใน M03 ให้ทำให้เล่นใน Blender ถูกและตั้งชื่อคลิปครบ — รายละเอียดปุ่ม export อยู่ที่ M04

บันทึกหลักฐานสั้น ๆ โดยไม่ต้องเรนเดอร์เต็ม:

  • Viewport → View → Viewport Render Animation (ชื่อเมนูตามเวอร์ชัน)
  • หรือบันทึกหน้าจอขณะกด Play

แนบไฟล์หรือสกรีนช็อตลำดับเฟรมคู่กับ clip list


Check Pass means
Lid origin at hinge หมุนแล้วเป็นบานพับ
At least one open/close motion เล่นใน Timeline ได้
No severe mesh intersection ตรวจตอนเล่น
Named action/clip เช่น lid_open
Clip list filled animation-clip-list.md
Scale from M01–M02 unchanged PCB ยังใส่ได้

  1. ทำแล็บ: แล็บ
  2. กรอก animation-clip-list.md
  3. เมื่อพร้อม ไปต่อ M04 — Blender to Twin Integration

  1. Editing Keyframes (4.5 LTS)
  2. Timeline
  3. Actions
  4. Dope Sheet
  5. Graph Editor
  6. Set Origin
  7. Parenting
  8. glTF 2.0 — Animations
  9. Blender Fundamentals 4.5 LTS
  10. INC111-2021 Blender (Thai)
  1. M02 · M04 · Course 3 TOC
  2. Course 2 M03 (Virtual Device — คนละโฟกัส)

คำถามสั้นสามข้อใน quiz.yaml ผูกกับเป้าหมายของบทเรียนนี้ข้อละหนึ่งคำถาม ลองตอบเองก่อน แล้วค่อยเทียบกับเฉลยและคำอธิบายในไฟล์

ลงมือต่อที่ แล็บ: แอนิเมชันฝาและลำดับการเคลื่อนไหวสั้น

Lab · Clip list · ← TOC · ← M02 · M04 →

คำถามทบทวน

ลองตอบเองก่อน แล้วค่อยเปิดดูเฉลย

  1. ก่อนใส่ keyframe การเปิดฝา ควรวาง origin ของฝาไว้ที่ใด (เป้าหมายข้อ 1)

    1. ตำแหน่งกล้อง
    2. กึ่งกลางของฉาก
    3. ที่บานพับ
    4. กึ่งกลางของฝา
    ดูเฉลย

    คำตอบ: C. ที่บานพับ

    หัวข้อ 2.1 Place the origin at the hinge

  2. ชื่อคลิปใดเหมาะสำหรับส่งเข้า Twin (เป้าหมายข้อ 2)

    1. `lid_open`
    2. `Anim1`
    3. `เปิดฝา`
    4. `final_final2`
    ดูเฉลย

    คำตอบ: A. `lid_open`

    ตารางในหัวข้อ 3.4: ใช้ชื่อภาษาอังกฤษสั้น เลี่ยงชื่อว่าง ชื่อซ้ำ และภาษาไทยในชื่อคลิป

  3. ถ้าฝาเปิดแล้วชนชิ้นส่วนสูงภายใน บทเรียนเสนอทางแก้ใด (เป้าหมายข้อ 3)

    1. ซ่อนชิ้นส่วนที่ชนตอนเรนเดอร์
    2. export ใหม่โดยไม่ต้องแก้อะไร
    3. เลื่อนบานพับ ลดมุมเปิด หรือกลับไปแก้รูปทรงในโมดูล 2
    4. เปิด Physics simulation ให้ชิ้นส่วนเด้งออก
    ดูเฉลย

    คำตอบ: C. เลื่อนบานพับ ลดมุมเปิด หรือกลับไปแก้รูปทรงในโมดูล 2

    หัวข้อ 4: Motion ที่ชนคือบั๊กดีไซน์ที่จับได้ถูกกว่าตอนพิมพ์แล้วค่อยรู้

อ้างอิงบทเรียนนี้

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

"แอนิเมชันเปิด–ปิดและการตรวจการชน" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0

ข้อความอ้างอิงภาษาอังกฤษ: "Open/Close Animation and Interference Checks" from TESA Open Knowledge by the Thai Embedded Systems Association (TESA), https://github.com/tesaiot/tesa-qualification-program, licensed under CC BY-NC 4.0

ลิงก์บทเรียน: https://tesaiot.github.io/tesa-qualification-program/courses/product-design/m03-motion/l01-motion-and-interaction/

บทเรียนนี้ดัดแปลงจากต้นฉบับด้านล่าง เมื่ออ้างอิงให้คงเครดิตต้นฉบับไว้ด้วย
https://github.com/drsanti/TESAIoT-Courses/blob/287c21814ba8c75f693136616dcd270349a15966/C3/M03/README.md · Original content by Asst. Prof. Dr. Santi Nuratch (ผศ.ดร.สันติ นุราช), KMUTT. Course 3 (C3/) of drsanti/TESAIoT-Courses. TESA funded the work and holds the rights; published here under CC BY-NC 4.0. The upstream repository carries no licence file. Text kept faithful; structure, front matter, quizzes and notes added by TESA Open Knowledge.

วิธีอ้างอิง TESA ฉบับเต็ม

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

เนื้อหาเผยแพร่ภายใต้ CC BY-NC 4.0 นำไปใช้ต่อในงานที่ไม่ใช่เพื่อการค้าได้ โปรดอ้างอิงสมาคมสมองกลฝังตัวไทย (TESA) ทุกครั้ง · วิธีอ้างอิง TESA