Saturday, December 12, 2015

Pixar "Denoise" test

เพิ่งเริ่มหัด 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


รัน Pixar Denoise แบบ stand alone

Denoiser เป็นฟังค์ชั่นที่เพิ่มมาใหม่ใน Renderman ver 20.x ซึ่งจากภาพตัวอย่างในเวบ Pixar แล้ว น่าใช้เป็นที่สุด

ภาพจาก 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  

PATH = เพื่อให้ bat file รู้ตำแหน่งของ denoise.exe
dir = เพื่อเซฟรายชื่อไฟล์ exr ใน folder นั้นๆ ลง files.txt
และบรรทัดสุดท้ายคือรัน denoise โดยใช้ variance เพื่อใช้รายชื่อไฟล์ที่เซฟเอาไว้

หลังจากนั้น นำ bat ไฟล์ ก๊อปไปวางไว้ใน folder ของไฟล์ภาพ

ก่อนรัน 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

Tuesday, December 1, 2015

Lighting study

ซีนจากสตูโอครับ  reference เหล่านี้






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
อันที่จริงวิธีแก้ ก็แค่ต้องเจาะจงความยาวของไฟล์เป็นจำนวนเฟรม ให้ FFMPEG ด้วยเท่านั้นเอง ด้วย flag -vframes แต่ทีแรกก็เล่นเอางงอยู่พักนึง

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 คลาสสอนจัดแสงที่ผมจัดไว้เป็นอันดับต้นๆ


Instructor:  Jeremy Vickery
Link - Gnomon announced Efficient Cinematic Lighting 2: Lighting for Animation

อันนี้ Link คอร์สแรกของเขานะครับ

Friday, February 6, 2015

ต้นไม้จากเกม Airborn

เมื่อไม่นานมานี้ผมบังเอิญได้อ่าน กระทู้ของเกม Airborn บนเวบ Polycount และประทับใจต้นไม้ที่แปะไว้ในกระทู้มาก


พอมีคนถามถึง หนึ่งในทีมงาน ชื่อ katzeimsack ก็ แสดง wireframe ให้ดู ดังนี้ครับ


ดูง่ายจนไม่น่าเชื่อทีเดียว... แต่ทั้งนี้ทั้งนั้น นอกจาก Texture ต้องสวยแล้ว Vertex Normal ก็ต้องหลอกด้วยนะครับ ดูไอเดียได้ จาก Polycount wiki ครับ