เพิ่งเริ่มหัด Speedtree ครับ พอลองใส่ลมพัดดูแล้ว ก็เกิดสงสัยขึ้นมา ว่า Denoise ที่มากับ Renderman มันจะช่วยแก้กระพริบเวลาเรนเดอร์งานละเอียดๆ อย่างนี้ได้แค่ไหน
ผลที่ได้ผมว่าน่าประทับใจมากครับ ทั้งที่เซตเรนเดอร์แบบหยาบมากๆ
- 72 max samples
- 0.005 threshold
(ค่าที่ Pixar แนะนำสำหรับ production คือ 256 max samples และ 0.001 threshold)
ขั้นตอนสร้างต้นไม้
1. สร้างใบ ใน Speedtree แล้วแคปภาพมุมต่างๆ ออกมาเป็น texture
2. เอา texture ไปลองสร้าง low poly ใน Maya ดู
3. ส่งโมเดลจาก #2 กลับเข้า Speedtree เพื่อเอาไปแปะบนต้นไม้
4. export Alembic พร้อมแอนิเมชันลมพัด ส่งกลับเข้า Maya
Saturday, December 12, 2015
รัน Pixar Denoise แบบ stand alone
Denoiser เป็นฟังค์ชั่นที่เพิ่มมาใหม่ใน Renderman ver 20.x ซึ่งจากภาพตัวอย่างในเวบ Pixar แล้ว น่าใช้เป็นที่สุด
ปกติ เราสามารถสั่งเปิด Denoise ได้จาก Render Globals ใน Maya ซึ่งมี 2 โหมดหลักๆ คือ single frame ซึ่งแก้ noise ในภาพเดียว และ cross frame ซึ่งจะดูเฟรมหน้าและหลัง ด้วย
แต่ว่าการสั่ง denoise ใน render globals เลยนั้นผมว่าไม่สะดวกนัก เพราะคำสั่งนี้จะไม่ทำงานเลย จนกว่าการเรนเดอร์จะสิ้นสุดถึงเฟรมสุดท้าย ซึ่งถ้าเรา cancel batch render กลางคัน คำสั่งก็จะไม่รันเลย
ดังนั้นวิธีที่ดีกว่า คือการสั่งจาก command line ซึ่งเราจะพบตัว denoise.exe ได้ ใน folder ของ Pixar
PATH = เพื่อให้ bat file รู้ตำแหน่งของ denoise.exe
dir = เพื่อเซฟรายชื่อไฟล์ exr ใน folder นั้นๆ ลง files.txt
และบรรทัดสุดท้ายคือรัน denoise โดยใช้ variance เพื่อใช้รายชื่อไฟล์ที่เซฟเอาไว้
หลังจากนั้น นำ bat ไฟล์ ก๊อปไปวางไว้ใน folder ของไฟล์ภาพ
โดย default โปรแกรม denoise จะสร้างไฟล์ด้วยชื่อ _filtered และวางไว้ที่เดียวกับไฟล์ต้นแบบเลย
ถ้าต้องการตั้งชื่อใหม่ หรือเซฟไปที่อื่น ทาง Pixar มี flag อื่นๆ ให้เราทำได้ อันนี้ลองหาข้อมูลใน doc ดูนะครับ
https://renderman.pixar.com/resources/current/RenderMan/risDenoiseTool.html
ถามว่า จะสามารถ denoise ภาพที่เรนเดอร์จากโปรแกรมอื่นได้มั้ย... denoise tool จำเป็นต้องใช้ albedo pass ในไฟล์ exr ซึ่งหาก render engine ที่เราเลือกใช้สามารถเรนเดอร์ pass นี้ได้ ก็คงได้ละมังครับ อันนี้ผมไม่แน่ใจเพราะ V-Ray ผมยังหาวิธีเรน albedo pass ไม่ได้เลย
ถึงจะดูคล้ายๆ diffuse แต่มันเป็นคนละอย่างกัน
เดี๋ยว entry ต่อไปผมจะเอาผลการ denoise animation ต้นไม้มาลงให้ดูนะครับ
![]() |
| ภาพจาก http://renderman.pixar.com/view/denoiser |
ปกติ เราสามารถสั่งเปิด Denoise ได้จาก Render Globals ใน Maya ซึ่งมี 2 โหมดหลักๆ คือ single frame ซึ่งแก้ noise ในภาพเดียว และ cross frame ซึ่งจะดูเฟรมหน้าและหลัง ด้วย
แต่ว่าการสั่ง denoise ใน render globals เลยนั้นผมว่าไม่สะดวกนัก เพราะคำสั่งนี้จะไม่ทำงานเลย จนกว่าการเรนเดอร์จะสิ้นสุดถึงเฟรมสุดท้าย ซึ่งถ้าเรา cancel batch render กลางคัน คำสั่งก็จะไม่รันเลย
ดังนั้นวิธีที่ดีกว่า คือการสั่งจาก command line ซึ่งเราจะพบตัว denoise.exe ได้ ใน folder ของ Pixar
ซึ่งวิธีการใส่คำสั่ง ผมแนะนำให้ทำเป็น bat ไฟล์ ซึ่งทำเพียงไฟล์เดียวแล้วก็อปวางใน folder ที่ต้องการใช้งานได้ สะดวกมาก
PATH "C:\Program Files\Pixar\RenderManProServer-20.5\bin"; %PATH%;
dir /b *.exr > files.txt
denoise.exe -b --crossframe -v variance files.txt
dir = เพื่อเซฟรายชื่อไฟล์ exr ใน folder นั้นๆ ลง files.txt
และบรรทัดสุดท้ายคือรัน denoise โดยใช้ variance เพื่อใช้รายชื่อไฟล์ที่เซฟเอาไว้
![]() |
| ก่อนรัน denoise.bat |
| ||||
| หลังรัน denoise.bat |
โดย default โปรแกรม denoise จะสร้างไฟล์ด้วยชื่อ _filtered และวางไว้ที่เดียวกับไฟล์ต้นแบบเลย
ถ้าต้องการตั้งชื่อใหม่ หรือเซฟไปที่อื่น ทาง Pixar มี flag อื่นๆ ให้เราทำได้ อันนี้ลองหาข้อมูลใน doc ดูนะครับ
https://renderman.pixar.com/resources/current/RenderMan/risDenoiseTool.html
ถามว่า จะสามารถ denoise ภาพที่เรนเดอร์จากโปรแกรมอื่นได้มั้ย... denoise tool จำเป็นต้องใช้ albedo pass ในไฟล์ exr ซึ่งหาก render engine ที่เราเลือกใช้สามารถเรนเดอร์ pass นี้ได้ ก็คงได้ละมังครับ อันนี้ผมไม่แน่ใจเพราะ V-Ray ผมยังหาวิธีเรน albedo pass ไม่ได้เลย
ถึงจะดูคล้ายๆ diffuse แต่มันเป็นคนละอย่างกัน
เดี๋ยว entry ต่อไปผมจะเอาผลการ denoise animation ต้นไม้มาลงให้ดูนะครับ
Wednesday, December 9, 2015
Mental Ray, V-ray, Arnold, Renderman จากมุมมอง Digital Domain Artist
เป็น post ที่น่าสนใจมากครับ จากคุณ Casey
- Digital Domain ปัจจุบันใช้ V-ray เป็นหลักตั้งแต่ TRON เป็นต้นมา เพราะ optimize ได้ละเอียด ง่าย และไว
- MR มีวิธีปรับหลายวิธีที่สุด เพราะระหว่างการพัฒนา มีการใส่ระบบต่างๆ เพื่อแก้ปัญหาที่เจอตามรายทาง และ MR เก็บไว้เกือบหมด ต่างกับ V-ray ที่ค่อยๆ เอาระบบเก่าๆ ออกไป จนปัจจุบันค่อนข้าง simplify
- Transformer ใช้ Renderman เพราะ asset ยกมาจากระบบเก่า คล้ายๆ กัน SSS ตัวละครหลายๆ ตัวก็ยังใช้ MR เพราะยกมาจาก shader เก่าเหมือนกัน แต่เขาบอกว่า SSS ใหม่ของ V-ray ใช้งานดีมากและใช้เต็มตัวตั้งแต่ X-men First Class
- Renderman RIS รับข้อมูลได้มหาศาลที่สุด ซึ่งในหลายๆ shot ความเร็วในการเรนเดอร์นี่ไม่เกี่ยวแล้ว ขอแค่ให้มันเรนโดยไม่แฮ้งค์ก็พอ
- บอกว่า Arnold มี ค่าให้ตั้งใน shader เยอะกว่า ทำให้ shading artist มีอิสระในการทำงานมากกว่า
- เขามั่นใจว่า TD และ Lookdev ระดับท๊อปๆ ของโลกที่เคยผ่านงานมาด้วยกัน มีใจโอนเอียงมาทาง V-ray เหมือนเขา
- AA Triangle size 2 นี่แหละที่ผมใช้มาตั้งกะสมัย 3delight
http://forums.cgsociety.org/showpost.php?p=8122955&postcount=13
UPDATE
ต่อครับ
เขามองว่า Render engine ปัจจุบันแตกออกเป็น 2 ไอเดียค่อนข้างชัดเจน คือประเภทปรับแต่งได้เพื่อลดเวลาเรนเดอร์ และพวกเน้นให้เรนออกโดยไม่สนเวลา
V-Ray อยู่ในพวกแรก ซึ่งการที่เราสามารถตั้งแยกได้ทุกอย่างตั้งแต่ GI primary/secondary, ไฟทุกดวง, mat ทุกชิ้น รวมถึง override วัตถุได้อีกต่างหาก ทำให้ลดเวลาเรนเดอร์ลงได้มาก
ส่วน RIS ที่ปรับได้เพียง quality น่าจะตกอยู่ในเภทหลัง เป็นเพื่อน Arnold โดยเฉพาะบาง shot ใน Good Dinosaur ซึ่งใช้เวลาเรนถึง 40 ชั่วโมง เป็นตัวตอกย้ำที่ชัดเจนว่านั่นคือทิศทางของ RIS
https://www.fxguide.com/featured/making-the-world-of-pixars-the-good-dinosaur/
http://forums.cgsociety.org/showpost.php?p=8123047&postcount=18
- Digital Domain ปัจจุบันใช้ V-ray เป็นหลักตั้งแต่ TRON เป็นต้นมา เพราะ optimize ได้ละเอียด ง่าย และไว
- MR มีวิธีปรับหลายวิธีที่สุด เพราะระหว่างการพัฒนา มีการใส่ระบบต่างๆ เพื่อแก้ปัญหาที่เจอตามรายทาง และ MR เก็บไว้เกือบหมด ต่างกับ V-ray ที่ค่อยๆ เอาระบบเก่าๆ ออกไป จนปัจจุบันค่อนข้าง simplify
- Transformer ใช้ Renderman เพราะ asset ยกมาจากระบบเก่า คล้ายๆ กัน SSS ตัวละครหลายๆ ตัวก็ยังใช้ MR เพราะยกมาจาก shader เก่าเหมือนกัน แต่เขาบอกว่า SSS ใหม่ของ V-ray ใช้งานดีมากและใช้เต็มตัวตั้งแต่ X-men First Class
- Renderman RIS รับข้อมูลได้มหาศาลที่สุด ซึ่งในหลายๆ shot ความเร็วในการเรนเดอร์นี่ไม่เกี่ยวแล้ว ขอแค่ให้มันเรนโดยไม่แฮ้งค์ก็พอ
- บอกว่า Arnold มี ค่าให้ตั้งใน shader เยอะกว่า ทำให้ shading artist มีอิสระในการทำงานมากกว่า
- เขามั่นใจว่า TD และ Lookdev ระดับท๊อปๆ ของโลกที่เคยผ่านงานมาด้วยกัน มีใจโอนเอียงมาทาง V-ray เหมือนเขา
- AA Triangle size 2 นี่แหละที่ผมใช้มาตั้งกะสมัย 3delight
http://forums.cgsociety.org/showpost.php?p=8122955&postcount=13
UPDATE
ต่อครับ
เขามองว่า Render engine ปัจจุบันแตกออกเป็น 2 ไอเดียค่อนข้างชัดเจน คือประเภทปรับแต่งได้เพื่อลดเวลาเรนเดอร์ และพวกเน้นให้เรนออกโดยไม่สนเวลา
V-Ray อยู่ในพวกแรก ซึ่งการที่เราสามารถตั้งแยกได้ทุกอย่างตั้งแต่ GI primary/secondary, ไฟทุกดวง, mat ทุกชิ้น รวมถึง override วัตถุได้อีกต่างหาก ทำให้ลดเวลาเรนเดอร์ลงได้มาก
ส่วน RIS ที่ปรับได้เพียง quality น่าจะตกอยู่ในเภทหลัง เป็นเพื่อน Arnold โดยเฉพาะบาง shot ใน Good Dinosaur ซึ่งใช้เวลาเรนถึง 40 ชั่วโมง เป็นตัวตอกย้ำที่ชัดเจนว่านั่นคือทิศทางของ RIS
https://www.fxguide.com/featured/making-the-world-of-pixars-the-good-dinosaur/
http://forums.cgsociety.org/showpost.php?p=8123047&postcount=18
Tuesday, December 1, 2015
Thursday, May 14, 2015
FFMPEG กับไฟล์หนัง 60fps
ผมได้นำ FFMPEG มาใช้บีบ Playblast จาก Maya ด้วย H.264 มากว่า 2 ปีแล้ว ซึ่งก็ใช้ได้ดีและได้ขนาดไฟล์เล็กถูกใจมาเสมอ
จนกระทั่งโปรเจคล่าสุด มีการใช้เฟรมเรต 60 fps เป็นครั้งแรก ปรากฏว่า FFMPEG ค่อนข้างเอ๋อไปเหมือนกัน Playblast ออกมาแค่ 80 frame แต่มันพยายาม encode เฟรม 81 82 83... ไปถึง 150 บ้าง 160 บ้าง
ปรากฏว่า 1-80 ปกติดีครับ แต่ 81 เป็นต้นไปจะเป็นเฟรมเละ บางทีก็เป็นภาพซ้อน
อันที่จริงวิธีแก้ ก็แค่ต้องเจาะจงความยาวของไฟล์เป็นจำนวนเฟรม ให้ FFMPEG ด้วยเท่านั้นเอง ด้วย flag -vframes แต่ทีแรกก็เล่นเอางงอยู่พักนึง
การหาจำนวนเฟรมจาก Maya ทำได้ไม่ยาก ถ้าต้องการ playback ทั้งแถบ ใช้โค้ด
หรือถ้าต้องการเฟรมเฉพาะส่วนที่ select ไฮไลท์ไว้ ใช้โค้ด
จากนั้นเอาค่าที่ได้มาลบกันก็เป็นอันเสร็จ
จนกระทั่งโปรเจคล่าสุด มีการใช้เฟรมเรต 60 fps เป็นครั้งแรก ปรากฏว่า FFMPEG ค่อนข้างเอ๋อไปเหมือนกัน Playblast ออกมาแค่ 80 frame แต่มันพยายาม encode เฟรม 81 82 83... ไปถึง 150 บ้าง 160 บ้าง
ปรากฏว่า 1-80 ปกติดีครับ แต่ 81 เป็นต้นไปจะเป็นเฟรมเละ บางทีก็เป็นภาพซ้อน
![]() |
| เฟรมเสีย จาก FFMPEG |
ffmpeg -y -i "uncompressed.avi" -vcodec libx264 -vframes 80 -crf 22 -bf 0 "output.mp4"
การหาจำนวนเฟรมจาก Maya ทำได้ไม่ยาก ถ้าต้องการ playback ทั้งแถบ ใช้โค้ด
startframe = pm.playbackOptions(q=1, ast=1) endframe = pm.playbackOptions(q=1, aet=1)
หรือถ้าต้องการเฟรมเฉพาะส่วนที่ select ไฮไลท์ไว้ ใช้โค้ด
slider = pm.mel.eval('$tmpVar=$gPlayBackSlider')
startframe, endframe = pm.timeControl(slider,q=True,rangeArray=True)
จากนั้นเอาค่าที่ได้มาลบกันก็เป็นอันเสร็จ
Wednesday, April 8, 2015
Lighting for Animation!!
Gnomon เตรียมออกคอร์สใหม่แล้วครับ จาก Jeremy Vickery ผู้สอน Masterclass Efficient Cinematic Lighting คลาสสอนจัดแสงที่ผมจัดไว้เป็นอันดับต้นๆ
Link - Gnomon announced Efficient Cinematic Lighting 2: Lighting for Animation
อันนี้ Link คอร์สแรกของเขานะครับ
![]() |
| Instructor: Jeremy Vickery |
อันนี้ Link คอร์สแรกของเขานะครับ
Friday, February 6, 2015
ต้นไม้จากเกม Airborn
เมื่อไม่นานมานี้ผมบังเอิญได้อ่าน กระทู้ของเกม Airborn บนเวบ Polycount และประทับใจต้นไม้ที่แปะไว้ในกระทู้มาก
พอมีคนถามถึง หนึ่งในทีมงาน ชื่อ katzeimsack ก็ แสดง wireframe ให้ดู ดังนี้ครับ
ดูง่ายจนไม่น่าเชื่อทีเดียว... แต่ทั้งนี้ทั้งนั้น นอกจาก Texture ต้องสวยแล้ว Vertex Normal ก็ต้องหลอกด้วยนะครับ ดูไอเดียได้ จาก Polycount wiki ครับ
พอมีคนถามถึง หนึ่งในทีมงาน ชื่อ katzeimsack ก็ แสดง wireframe ให้ดู ดังนี้ครับ
ดูง่ายจนไม่น่าเชื่อทีเดียว... แต่ทั้งนี้ทั้งนั้น นอกจาก Texture ต้องสวยแล้ว Vertex Normal ก็ต้องหลอกด้วยนะครับ ดูไอเดียได้ จาก Polycount wiki ครับ
Subscribe to:
Posts (Atom)










