ซันประกาศโอเพนซอร์สโครงการ SceneGraph โดยมันจะถูกนำมาใช้เป็นเอนจิ้นการทำ scene-graph ใน JavaFX Script
ความสามารถการทำ scene-graph เป็นคุณสมบัติที่สำคัญในงานแสดงผลกราฟิก เรามักจะพบเห็นการประยุกต์ใช้ scene-graph ในเกมยุคใหม่หรือการทำงานร่วมกับรูปภาพเวกเตอร์อยู่ทั่วไป อธิบายพอสังเขป scene-graph เป็น data structure แบบหนึ่ง มักนำเสนอในรูปแบบต้นไม้ (Tree) จะมีโหนดต่างๆ ซ้อนอยู่ภายใน การกระทำที่เกิดขึ้นกับโหนดกราฟิกรูปภาพใดๆ จะส่งผลกระทบต่อโหนดลูกของมันเสมอ ยกตัวอย่างในทางปฏิบัติ การโปรแกรม Swing ถือว่าใช้เทคนิก scene graph แบบง่ายๆ ภายใน container จะมี component ลูกซ้อนอยู่ เมื่อกระทำอะไรกับ container (ขยาย, หด, เปิดปิดการแสดงผล) จะส่งผลกระทบต่อไปยัง component ที่เป็นโหนดลูกของตัวเองเสมอ (ขยาย ยืดหด แสดงผลตาม)
ประโยชน์ของการทำงานในมุมมอง scene-graph จะช่วยให้เราโปรแกรมในมุมมองระดับที่สูงกว่า (เช่น การเล่นกับเอฟเฟกต์ โดยบอกให้โหนดนั้นหมุนเอียง 45 องศา ภายใน 2 วินาที โดยมีความเร่งเท่ากับ 2 หน่วย แทนการกำกับการวาดภาพใหม่ทั้งหมดทีละขั้นตอน) การนำเทคนิก scene-graph มาใช้ไม่ใช่เรื่องใหม่แต่อย่างใด ใน Swing มีโปรเจกต์ Timing Framework ที่ถูกออกแบบมาให้ช่วยแก้ปัญหานี้กับ Swing component โดยเฉพาะ ส่วนโปรเจกต์ SceneGraph จะใช้หลักการเดียวกันแต่ (ปัจจุบัน) สามารถประยุกต์ใช้กับกราฟิก 2D รูปภาพ หรือข้อความอื่นๆ ได้ด้วย โดยไม่ต้องฝังเทคนิก scene-graph ลงในสถาปัตยกรรม (physically) เหมือน Swing แต่ใช้ในรูปแบบมุมมองการคิดตามตรรกะ (logically) เพื่อความยืดหยุ่นในการปรับมุมมองและการประยุกต์ใช้เทคนิกขั้นสูงอื่นๆ กับโหนดต่างๆ ได้ง่ายกว่า
ก่อนหน้านี้ JavaFX Script ภายในใช้ Jazz เป็น scene-graph เอนจิ้น แต่เนื่องจาก Jazz หยุดการพัฒนาไปแล้ว และทีมงานต้องการใช้ประโยชน์เต็มที่จากอุปกรณ์กราฟิกฮาร์ดแวร์ และคุณสมบัติพิเศษที่มีใน 3D เอนจิ้นที่อยู่เบื้องล่าง (Direct3D, OpenGL) เลยเป็นที่มาของการสร้าง SceneGraph ขึ้นมาเอง
ความเร็วของ JavaFX Script กำลังถูกพัฒนาขึ้นเรื่อยๆ โปรเจกต์ JavaFX Script Compiler ขณะนี้ก็ผ่านก้าวแรกที่สำคัญไปแล้ว อันจะทำให้ JavaFX Script สามารถใช้ประโยชน์จาก Hotspot ใน JVM ได้อย่างเต็มที่ แทนการ interpret แบบเดิมๆ ส่วนเรื่องเครื่องมือการสร้างผลผลิตจาก JavaFX Script นั้น ที่ได้ข่าวมาตอนนี้กำลังซุ่มทำอยู่ คาดว่างาน JavaOne ปีหน้าคงได้เห็นกัน
ที่มา – Project SceneGraph
[update – จากที่พิจารณาอีกทีแล้วพบว่า Timing Framework แม้มันจะช่วยให้การสร้างเอฟเฟกต์ต่างๆ ง่ายขึ้นเยอะ (กำกับแต่เฉพาะว่าต้องการให้วาดอะไร ไม่ต้องบอกวิธีวาดอย่างไร) แต่ก็ยังไม่ได้โปรแกรมในมุมมองที่เป็น scene ยังคงวาดไปตรงๆ ซ้ำๆ ทุกครั้งที่ต้องการ ซึ่งถ้าเป็น scene-graph จริงๆ แล้วแต่ละ scene จะต้องถูกบันทึกไว้เป็นช็อตๆ แล้วเราโปรแกรมกับแต่ละ scene ได้ เท่าที่ไล่ดู API และตัวอย่างการใช้ SceneGraph แล้วพบว่ามันครอบ Timing Framework ไว้อีกชั้นนี่เอง เจ๋งมากๆ!!! ]