Processing แนวใหม่ของ Graphics Programming และการ Visualize Data

ใครก็ตามที่เคยได้เรียนวิชาทางด้าน Computer Graphics Programming ก็คงจะรู้ดีว่าระบบกราฟฟิคในแง่ของโปรแกรมมิ่ง ไม่ใช่เรื่องที่ง่าย ไหนจะวิธีการ set up  environment ต่างๆ เพราะว่าระบบกราฟฟิคแต่ละแบบก็แตกต่างกันไป บางทีก็จะมีเรื่องของ graphics card เข้ามาเกี่ยวข้อง ในเรื่องของโค้ดก็ไม่ใช่จะหมูๆเลย บางครั้งเราต้องคิดสมการออกมาให้ดีเพื่อจะได้เรื่องการ optimized ของ performance ที่ดียิ่งขึ้น บางเรื่องที่ชวนน่าปวดหัว เช่นลำดับการ render ของกราฟฟิคก็เป็นเรื่องที่เรามองข้ามไม่ได้เลย

เพราะฉะนั้นเราจะเห็นได้ว่า ระบบ computer graphics ไม่ใช่ระบบเล็กๆ และเป็นเรื่องใหญ่มากหากใครต้องการสร้างโปรแกรมที่ใช้ computer graphics มาเกี่ยวข้อง

ผมก็เจอสภาพเครียดเช่นกันตอนที่เรียนวิชา computer graphics อยู่ ผมเบื่อหน่ายกับความยุ่งยากของการโปรแกรมมิ่ง openGL  เอามากๆ เอาเป็นว่ามันดูเรื่องมากฉิบหายในการทำกราฟฟิคสามมิติขึ้นมา และ bug อะไรที่ทำให้กราฟฟิคเราออกมาในรูปแบบที่ไม่ต้องการก็ดูจะตรวจสอบได้ยาก และเข้าใจยากๆ ชอบกล

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

คราวนี้ที่ต้องทำกาค้นหาต่อก็คือว่า เอาอะไร (framework , library , IDE) มาทำล่ะวะเนี้ยะ?

ก็ต้องกลับไปดูพวกระบบกราฟฟิคที่เคยเรียนๆ มา อย่าง openGL หรือ directX แต่มันรู้สึกว่ามันจะรอดมั้ยวะ เพราะว่าแค่ส่วนกราฟฟิคก็จะตายแล้ว ไอ้ตรงวิเคราะห์เสียงก็ตายไปข้างเหมือนกัน บางทีก็ดูพวก plug-ins ของ winamp ที่มันมี library ให้ใช้ทำ visualizer ได้ แต่มันก็ดูไม่สะดุดตาสักเท่าไหร่ หรือใช้ quartz composer แต่มันก็ดูไม่ค่อยจะเข้าทางเท่าไหร่ตอนนั้น เพราะtutorial มันน้อยเหลือเกิน และ mac programming ก็ไม่เรื่องวันสองวัน จนวันนึงผมเปิดไปเจอ web service ตัวนึงที่มันเทพมาก ชื่อว่า echonest สามารถทำการวิเคราะห์ audio และส่ง xml ข้อมูลทั้งหมดกลับมา

แล้วไงต่อ … มันเกี่ยวกับ Processing ตรงไหนเนี้ยะ

ตอนนั้นได้รู้จักกับ Processing เพราะว่า มีท่านซึ่งจำชื่อไม่ได้แล้ว เขาได้ผนวก web service ของ echonest ซึ่งโปรแกรมมันจะอ่าน xml แล้วเรนเดอร์กราฟฟิคออกมา โอ้โห music visualizer ตัวนี้แหละที่ทำให้เรามั่นใจว่าทำโปรเจคนี้ได้ชัวร์ ตอนนั้นดูใหญ่เลย เจ้า visualizer ที่เขาทำนั้นเป็นสองมิติ เลยคิดว่าเราคงพัฒนาตัวที่เป็นสามมิติได้

Processing เป็น graphics IDE ที่ออกแบบมาเพื่อผู้ใช้ที่ไม่ใช่โปรแกรมเมอร์จ๋า ซึ่งเค้ามุ่งไปทางพวก artist , visual designers หรือ graphics designers เพราะว่าการเขียนโค้ดเป็นอะไรที่ง่ายเอามากๆ syntax นั้นเป็นอะไรที่ตรงๆ ใช้ครั้งแรกคุณนับได้เลยว่า คุณคงเจอ bug ไม่เกินสามครั้ง ซึ่งความง่ายของมันก็ไม่ได้หมายความว่ามันแตกต่างจากการเขียน openGL เลย มันยังอยู่บนพิ้นฐานของ programming อยู่ คือ loop , if-else มีหมด เพียงแต่มันไม่ require การ set up ที่ยุ่งยาก

เบื้องหลังของมันนั้นเป็นผลงานโปรเจคร่วมของ Ben Fry และ Casey Reas ที่ MIT ตัวProcessing IDE นี้จริงๆแล้วเป็นการเขียนภาษา Processing ลงทับ Java Graphics เพื่อจะได้ syntax ที่ใช้ง่ายและสะดวกสบายขึ้นในทางของ graphics และ multimedia ซึ่งตอนนี้ก็เป็น IDE opensource ที่มีให้โหลดทั้ง 3 OS หลัก ภายในของ Processing ก็มี extensions ออกมาหลายๆ เพื่อการทำงานที่หลากหลาย มันสามารถทำงานกับกราฟฟิค images xml pdf networking videos physics ซึ่งเยี่ยมยอดมากๆ ในที่นี้เลยขอแนะนำ audio library ที่ผมได้นำมาใช้ในการทำ music visualizer ของผมด้วย minim ซึ่งเป็น audio library ที่สร้างมาเพื่อ Processing โดยเฉพาะ ดีมากๆ ลองดู features ของมันในเว็บนะครับ

บนเว็บ Processing ก็มีผลงานของผู้ใช้งาน Processing มากมายในส่วนของ Exhibition ซึ่งผมว่ามันน่าชมมากๆ คือมันทำกราฟฟิคออกมาได้แนว modern มาก ชอบจริงๆครับ ใครทีดูส่วนนี้นะ หลง Processing เข้าแน่นอน ขณะนี้โปรเจคที่ขยายจากตัว Processing เดิมก็มีมากมาย ทั้ง Processing Mobile ที่นำ Processing ไปทำงานบนมือถือที่รัน Java ได้ , Processing Javascript ที่ทำให้เราสามารถวาดกราฟฟิคในแบบ Processing ลงบนหน้าเว็บได้โดยตรง หรือ มีทั้ง Ruby-Processing , Auduino และ Wiring ที่นำ Processing IDE ไปทำงานสั่งแผงวงจรด้วย

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

November 10, 2009
VIEWS (153) | COMMENTS (0) POSTED BY ADMIN