Giới thiệu chung

Một phần của tài liệu Nghiên cứu mô hình mặt các kỹ thuật chuyển động (Trang 42)

Java 3D API cung cấp một tập cấu trúc mức cao để tạo, render, thực thi scenegraph 3D mô tả các hình khối 3D, âm thanh, ánh sáng… Java 3D là một giao diện lập trình ứng dụng (API) do hãng Sun MicroSystem phát triển với mục đích hỗ trợ các ứng dụng tương tác đồ họa 3D viết bằng ngôn ngữ lập trình Java. Version gần đây nhất là 1.3.1. Java 3D là một client-side Java API (có thể chạy trên browser của máy client). Một số client-side API khác của Sun như Abstract Windows Toolkit (AWT) và Java Foundation Classes (JFC/Swing) đều là những thư viện hỗ trợ giao diện đồ họa người dùng [3].

Có hai biến thể của Java 3D, một là dựa trên OpenGL (chuẩn công nghiệp tương tác đồ họa 3D, do Silicon Graphics (SGI) phát triển, dùng để tạo các ứng dụng tương tác đồ họa 2D và 3D), một dựa trên DirectX (thành phần đồ họa 3D hỗ trợ thời gian thực của Microsoft DirectX). Các API mức thấp này điều khiển thực hiện việc render còn mô tả quang cảnh (scene), chương trình ứng dụng logic, tương tác scene thực hiện trong Java. OpenGL là mức mô tả scene 3D gồm danh sách các điểm, đường, đa giác, còn Java 3D có thể mô tả scene là một tập các đối tượng. Bằng cách nâng mức mô tả và trừu tượng, Sun không chỉ áp dụng nguyên lý OOP và lĩnh vực đồ họa mà còn giới thiệu tùy chọn scene để có thể bù chi phí gọi qua JNI (JNI – Java Native Interface, dùng để gọi các thư viện OpenGL) [3].

4.1.1 Ưu điểm của Java 3D

* Cấu trúc Scenegraph làm cho việc lập trình đơn giản hơn đối với người chưa có kinh nghiệm (thậm chí đối với lập trình viên có kinh nghiệm) do cấu trúc này nhấn mạnh vào thiết kế scene hơn là render, ẩn đi cấu trúc đồ họa mức thấp, cho phép phát triển ứng dụng ở mức cao:

- Lập trình viên chỉ cần tập trung vào nội dung của ứng dụng mà không cần quan tâm tới cấu trúc mức thấp như render.

- Java 3D cho phép lựa chọn kiểu render.

* Java 3D hỗ trợ đa dạng platform, môi trường hiển thị và thiết bị đầu vào, hỗ trợ nhiều file định dạng như 3DS (3DSmax), OBJ (Alias| Wavefront object), VRML (Virtual Reality Modeling Language), LW3D (Lightwave 3D scene), …

* Java 3D cung cấp ba cách render. Đó là: Immediate mode, Retained mode, Mixed mode [3]. Điều này cho phép người dùng thoải mái trong việc lựa chọn cách thực hiện một ứng dụng Java 3D. Hầu hết những người xây dựng ứng dụng Java 3D đều thích những cải tiến về hai mặt tiện nghi và thực hiện mà các phương thức render mang lại.

* Java 3D là Java, do đó được phát triển trên nguyên lý hướng đối tượng (lớp, thừa kế, đa hình), luồng, xử lý ngoại lệ, … Java 3D có thể dễ dàng sử dụng các API Java khác như JMF hay JAI.

* Tài liệu và ví dụ: hệ thống tài liệu và ví dụ của Java 3D được xây dựng tương đối chi tiết. Có khoảng 40 ví dụ từ nhỏ đến trung bình. Tutorial có thể tìm thấy tại địa chỉ online: http://java.sun.com/products/javamedia/3D/. Đây sẽ là những chỉ dẫn trong quá trình làm việc với Java 3D [9, 44, 46, 47, 49, 52].

* Một số lĩnh vực ứng dụng Java 3D [10]: - Mô hình hóa thông tin - Mô hình hóa khoa học - Mô hình hóa y tế

- Thiết kế được máy tính hỗ trợ (CAD) - Hệ thống thông tin địa lý (GIS) - Hoạt hình

- Giáo dục

- Một số lập trình viên làm việc với OpenGL cho rằng một số đặc điểm của OpenGL khó thậm chí không thể thực hiện trong Java 3D. Mặc dù Java 3D có những tùy chọn rất rõ ràng, những nhà phát triển có kỹ năng sử dụng OpenGL và C có thể hoàn tất việc thực hiện ở mức cao hơn các lập trình viên Java sử dụng Java 3D. Nếu quá trình render hoàn toàn ở mức ưu tiên cao nhất thì tốt nhất là sử dụng OpenGL.

- Java 3D là một client-side API, do đó khó phân phối đến với người dùng cuối. Hiện nay số lượng người sử dụng Windows là rất lớn, tuy nhiên Sun yêu cầu sử dụng Java 2 (JRE 1.2) cho Java 3D mặc dù MicroSoft JVM không hỗ trợ Java 2. Điều này có nghĩa là người sử dụng phải tải Java 2 của Jun về và tiến hành cài đặt Java 2, sau đó tải Java 3D và cài đặt tương tự. Nếu triển khai (deploy) ứng dụng chạy như một applet, quá trình cài đặt sẽ phức tạp hơn do người sử dụng phải copy và sửa chữa file cấu hình trước khi xem applet [3].

Mặc dù còn một số điểm chưa tối ưu nhưng Java với tính trừu tượng cao, thư viện API chuẩn phong phú, và còn nhiều đặc điểm khác đủ để các ứng dụng có thể tiến ra thị trường. Vì vậy, Java 3D thực sự là một lựa chọn đúng đắn nếu muốn sử dụng Java để lập trình 3D.

Một phần của tài liệu Nghiên cứu mô hình mặt các kỹ thuật chuyển động (Trang 42)