Bakeing Point Cloud [Bake 3D]

Wednesday, February 24, 2010 ที่ 11:35 AM

ที่เรารู้ๆก็คือ เรา Bake เพื่อลดเวลาการ Render ในครั้งถัดๆไปน่ะเอง เพราะการทำงาน Shot นึง Render นับครั้งไม่ถ้วน
ใน RenderMan Standard จะใช้วิธีที่เรียกว่า Point Cloud Baking ซึ่งหนแรกจะต้อง Write หรือเขียน Bake file ออกมานั่นเอง แล้วถัดมาก็ต้อง Read หรืออ่านเข้าไป

ที่นี้ใน RSL จะเป็น

Compile ด้วย 3Delight ด้วย shaderdl my_ptc_write.sl ก็จะได้ my_ptc_write.sdl มา

ต่อมาที่ rib เปิดมาแล้วก็แก้ shader ไปเป็น "my_ptc_write"

แล้วก็ render ออกมาด้วยคำสั่ง renderdl teapot.rib ซึ่งจะใช้เวลานานทีเดียวเพราะ sample ไว้ที่ 1024 แน่ะ

เราจะได้ file artslan.ptc ซึ่งนี่ก็คือ Point Cloud เปิดดูได้กับ ptview ของ 3delight ก็จะเป็นลักษะณะแบบนี้

จะเห็นว่าด้านหลังตัว Ponit Cloud จะไม่เห็นเพราะเราไม่ได้สั่ง

Attribute "cull" "hidden" 0
Attribute "cull" "backfacing" 0

ดังนั้นที่ไม่เห็นในกล้องก็จะไม่มี ดังนั้นเวลาเอาไปใช้ใน 3Delight ก็ต้องสั่ง ไม่ต้อง culling ไม่งั้นหมุนกล้องไปด้านหลัง มันจะดำ เนื่องจากมันไม่เห็นในกล้องและที่ตัวมันเองบังตัวมันเอง
และอีกอันที่สำคัญก็คือ

Attribute "dice" "rasterorient" 0

ก็คือการ Dicing ไปเป็น micropolygons ก่อนที่จะ shade น่ะเอง แต่ในที่นี้เราจะ Bake มัน ก็ไม่จำเป็นเลยที่จะต้อง Dicing ดังนั้นเมื่อเรียกใช้ใน 3Delight ทั้ง 3 ตัวนี้ก็ติ๊กออกให้หมด ก็จะทำให้ Point Cloud ของเราเห็นหมดทุกมุมทั้งที่บังและก็ไม่บัง

ต่อมาเมื่อ bake แล้ว ได้ file artslan.ptc มาแล้วก็ต้อง read texture3d กลับเพื่อนำไปใช้ ก็จะเป็น RSL นี้

แล้วก็ compile shader นี้ก็จะได้ my_ptc_read.sdl ออกมา

ต่อมาก็ไปที่ rib แก้เป็น shader my_ptc_read เพื่อจะอ่าน pont cloud กลับมา ในที่นี้ก็คือ artslan.ptc ที่ได้มาตอน write น่ะเอง

ทีนี้ก็สั่งคำสั้ง renderdl -d teapot.rib ก็จะได้ภาพ Bake Occlusion ออกมาอย่างไว จะหมุนกล้องไปมุมไหนก็ได้ครับทีนี้ใน Maya แต่ถ้าตัวที่ bake มี deform หรือ animation ต่างๆก็ต้อง bake3D sequence ออกมาอย่างในลักษณะเดียวกันนี้แหละครับ




กรณีที่เราใส่
Attribute "cull" "hidden" 0
Attribute "cull" "backfacing" 0
Attribute "dice" "rasterorient" 0

Free Image Hosting At site

เวลาดู Point Cloud ก็จะเห็นทั้งหมด

3 ความคิดเห็น

  1. Tth TDEE Says:

    " ต่อมาที่ rib เปิดมาแล้วก็แก้ shader ไปเป็น "my_ptc_write" "
    [IMG]http://lh6.ggpht.com/_Zg02Bij5lSU/S4V_clZGvOI/AAAAAAAAAak/OWJ6WXqTX2s/s800/Screen_shot_2010-02-25_at_1-full.37.34_AM.gif[/IMG]

    สวัสดีครับ คุณ Artslan ผมอยากทราบว่าขั้นตอนนี้ เราต้อง rib ไฟล์จาก scene maya ที่เป็นไฟล์ mb มาก่อนใช่หรือเปล่าครับ แล้ว scene ที่ rib นี่ ใช่ scene โมเดล teapot เฉยๆ หรือเปล่าครับ แล้วไม่ต้อง Assign shade my_ptc_write ลงไปในโมเดล teapot อะไรเลยใช่ไหมครับ แล้ว scene นี่ คือ ไม่ต้องใส่ shade ใส่แสงอะไรเลยใช่หรือเปล่าครับ คือมาใส่ shade ใน text editor แทนใช่เหรือเปล่าครับ ส่วนในขั้นตอน my_ptc_read นี่ทำคล้ายๆกับ my_ptc_write ใช่หรือเปล่าครับ ขอบคุณมากครับ

  2. artslan Says:

    เราต้อง rib ไฟล์จาก scene maya ที่เป็นไฟล์ mb มาก่อนใช่หรือเปล่าครับ/n

    ใช่ครับก็คือ render ออกมาเป็น RIB ก่อนน่ะเองครับ เข้าใจถูกแล้วครับ

    scene ที่ rib นี่ ใช่ scene โมเดล teapot เฉยๆ หรือเปล่าครับ แล้วไม่ต้อง Assign shade my_ptc_write ลงไปในโมเดล teapot อะไรเลยใช่ไหมครับ/n

    คือใน RIB file เราจะให้มันเรียก Shader ที่เรา Compile แล้วด้วยน่ะครับ จะว่าเป็นการ Assign ก็ว่าได้เหมือนกันน่ะครับ

    แล้วไม่ต้อง Assign shade my_ptc_write ลงไปในโมเดล teapot อะไรเลยใช่ไหมครับ แล้ว scene นี่ คือ ไม่ต้องใส่ shade ใส่แสงอะไรเลยใช่หรือเปล่าครับ

    จริงๆมันเรียก shader มาใช้แล้วน่ะครับ ส่วนแสงไม่จำเป็นต้องใส่ครับ เพราะเราทำการ Bake ซึ่งจะได้เป็น Point Cloud ครับ จากตัวอย่างที่ทำเราจะได้ Occlusion มาครับ

    คือมาใส่ shade ใน text editor แทนใช่เหรือเปล่าครับ

    ถ้า frame เดียว เรียก shader โดยเขียนใน text editor ได้ครับ แต่ถ้าหลายๆ frame ก็ assign shader ให้หมดก่อนแล้วก็ render ออกมาเป็น rib sequence แทน ซึ่งวิธีการก็เหมือนกันครับ

    ส่วนในขั้นตอน my_ptc_read นี่ทำคล้ายๆกับ my_ptc_write ใช่หรือเปล่าครับ

    ใช่ครับ ต่างกันที่อันแรก ให้มัน เขียนไฟล์ .ptc ออกมาก่อน เพื่อ shader ต่อมาจะได้เรียกไปใช้เลย ไม่ต้องมาเขียนซ้ำ หรือเราจะเรียกว่า reuse หรือ lazy mode น่ะครับ

  3. Unknown Says:

    ขอบคุณมากครับ คุณ Artslan ผมทำได้แล้วครับ ขอบคุณครับ

    คุณ Artslan ครับ คุณ Artslan ทำ shave hair cut render แบบแยก pass ได้หรือเปล่าครับ พอดีผมไปอ่านเจอ topic นี้ http://www.3delight.com/en/modules/PunBB/viewtopic.php?id=1874 แล้วปรากฎว่า แยกได้แต่ pass specular ส่วน pass อื่นพวก (diffuse,ambient occlusion,keylight)ไม่ได้อ่ะครับ อยากให้คุณ artslan ทำบทความเรื่องนี้จังครับ ขอบคุณมากครับ

    follow me on Twitter

    Thaiafterfx | Entries (RSS) | Comments (RSS) | Designed by MB Web Design | XML Coded By Cahayabiru.com | Distributed by Deluxe Templates | My Flickr Artslan Flickr