Trang

2/11/16

HƯỚNG DẪN DÙNG IRRLICHT
TRONG ANDOIRD
I. Bài dịch từ ví dụ về Android của Irrlicht (VD 27) :
Để dùng Android bạn cần cài đặt các phần sau :
- Android SDK (from http://developer.android.com)
- Android NDK (from http://developer.android.com)
- ant (a build tool commonly used for Java)
- A Java jdk (for example openjdk-6-jdk)
- GNU Make 3.81 hay mới hơn
- Nếu bạn dùng Window thì phải cài thêm Cygwin (version tối thiểu là 1.7)
Biên dịch Irrlicht và ứng dụng của bạn :
1. Gán đường dẫn của Android SDK vào biến môi trường ANDROID_HOME
2. Thêm đường dẫn : $ANDROID_HOME/tools, $ANDROID_HOME/platform-tools và đường dẫn chính Android NDKvào biến môi trường PATH
3. Vào thư mục bằng cmd : source->Irrlicht->Android và gõ : “ndk-build” hay “ndk-build NDEBUG=1" để biên dịch Irrlicht.
4. vào thư mục examples->27.HelloWorld_Mobile và gõ "ndk-build" hay "ndk-build NDEBUG=1"
5. Gõ "ant debug" để tạo file .APK
6. Chép file HelloWorldMobile-debug.apk vào điện thoại của bạn và cài đặt bình thường hay dùng cách sau :
- Kết nối điện thoại với PC (nhớ bật cho phép gở lỗi) hay chạy chương trình mô phỗng.
- Gõ "adb -d install bin/HelloWorldMobile-debug.apk" (nếu dùng chương trình mô phỗng hay thêm tham số "-e" thay vì "-d") để cài tập tin .APK vào chương trình mô phỗng.
Một số vấn đề :
Error: Unable to resolve project target 'android-10' (không tìm được ‘android-10’)
Cách giải quyết :
Chạy : "android sdk" trong thư mục sdk/tools và cài API 10.
Cách khác : đặt lại APP_PLATFORM trong file Application.mk cho project và cho Irrlicht. Trong trường hợp này bạn nên thay đổi luôn android:minSdkVersion trong file AndroidManifest.xml (đạ test chay Android-19 OK)

Mô tả các FILES :
AndroidManifest.xml:
            Mọi ứng dụng Android cần 1 file này để mô tả những cái cần thiết cho ứng dụng. Tên này phải chính xác là tên AndroidManifest.xml.
Xem http://developer.android.com/guide/topics/manifest/manifest-intro.html
                                                             
build.xml:
            Ant sẽ biên dịch file để tạo gói cuối cùng (.APK)
            Bạn có thể tạo một mô tả riêng như trong tài liệu của Android documentation:
            http://developer.android.com/tools/projects/projects-cmdline.html
            Điều này sau đó sẽ cập nhật file project.properties.
project.properties
            Bao gồm nhiều đích biên dịch (và có thể là thuộc tính của các project khác). Phải có file này.

jni:
            Một thư mục tên này phải là thư mục con của thư mục có chứa file build.xml.
            Thông thường nó chứa các file nguồn (c/c++), trong trong trường hợp của chúng ta dùng ở mức thư mục cao hơn (cùng mức với LOCAL_PATH chứa file Android.mk).
             
jni/Android.mk:
            Makefile cho project.
            Source-files trong project được thêm vào LOCAL_SRC_FILES
            Trong ví dụ Irrlicht example nó còn có thể sao chép vào thư mục assets, nhưng bạn còn có thể tạo assets đúng chổ.
                                               
jni/Application.mk:
            File tùy chọn ví dụ như bỏ bớt các module đã được cài và bạn có thể đặt kiến trúc đích xác định. Xem thêm thông tin trong thư mục docs của ndk.
                                                           
res:
            Thư mục có các tài nguyên được phân phối cho ứng dụng của bạn và có thể truy cập thông qua ID.
            Thật không may đến bây giờ NDK không thể truy cập  tài nguyên này. Vì thế bạn phải bằng cách nào đó truy cập chúng thông qua java-code và sao chép vào c++ hoặc bạn phải HACK để đọc định dạng trực tiếp(Một vài ứng dụng đã làm điều này, nhưng nó không an toàn trong tương lai và google không khuyến khích việc này).
            Hãy xem qua mục "App Resources" trong tài iệu android developer, vì nó khá phức tạp.
            Chúng ta chỉ dùng nó để lưu các icons cho ứng dụng trong ví dụ này.
             
assets:
            Các file ơ đây được phân phối trong ứng dụng của bạn. Nó hoạt động như hệ thống chỉ đọc.
           
assets/media/Shaders:
            Mã Shader cho driver OGLES2 điều khiển mô phổng một loạt hàm cố định.
            Trong ví dụ của chúng ta các lệnh này tự động thực thi việc sao chép trong file Android.mk.
            Đường dẫn mà chương trình shaders tìm kiếm đặt trong IRR_OGLES2_SHADER_PATH định nghĩa ở trong IrrCompileConfig.h
            Các tên là hardcoded  vì thế nó phải được xác định phải có trong thư mục media/Shaders.
            Bạn có thể viết lại shaders, nhưng chắc rằng thêm các file shaders hoạt động được bằng các tên này.
            OGLES1 driver không cần các file này.

obj:
            Tất cả các đối tượng và các thư viện được đặt tại đây trước khi chúng được liên kết với nhau.

libs:
            Chứa mã nhị phân của ứng dụng của bạn sau khi biên dịch. Ứng dụng bản thân nó là một lib(cơ bản vì mã giả “native code” không thể chạy trực tiếp chỉ gồm một lib).

src:
            Thư mục src chỉ cần thiết khi bạn có mã nguồn Javavà chỉ có các file .java và.aidl.

            Dù ví dụ này không dùng Java nhưng do makefile tạo thư mục này vì lệnh ant build.xml trong android sdk cần nó.
HƯỚNG DẪN DÙNG IRRLICHT
TRONG ANDOIRD
I. Bài dịch từ ví dụ về Android của Irrlicht (VD 27) :
Để dùng Android bạn cần cài đặt các phần sau :
- Android SDK (from http://developer.android.com)
- Android NDK (from http://developer.android.com)
- ant (a build tool commonly used for Java)
- A Java jdk (for example openjdk-6-jdk)
- GNU Make 3.81 hay mới hơn
- Nếu bạn dùng Window thì phải cài thêm Cygwin (version tối thiểu là 1.7)
Biên dịch Irrlicht và ứng dụng của bạn :
1. Gán đường dẫn của Android SDK vào biến môi trường ANDROID_HOME
2. Thêm đường dẫn : $ANDROID_HOME/tools, $ANDROID_HOME/platform-tools và đường dẫn chính Android NDKvào biến môi trường PATH
3. Vào thư mục bằng cmd : source->Irrlicht->Android và gõ : “ndk-build” hay “ndk-build NDEBUG=1" để biên dịch Irrlicht.
4. vào thư mục examples->27.HelloWorld_Mobile và gõ "ndk-build" hay "ndk-build NDEBUG=1"
5. Gõ "ant debug" để tạo file .APK
6. Chép file HelloWorldMobile-debug.apk vào điện thoại của bạn và cài đặt bình thường hay dùng cách sau :
- Kết nối điện thoại với PC (nhớ bật cho phép gở lỗi) hay chạy chương trình mô phỗng.
- Gõ "adb -d install bin/HelloWorldMobile-debug.apk" (nếu dùng chương trình mô phỗng hay thêm tham số "-e" thay vì "-d") để cài tập tin .APK vào chương trình mô phỗng.
Một số vấn đề :
Error: Unable to resolve project target 'android-10' (không tìm được ‘android-10’)
Cách giải quyết :
Chạy : "android sdk" trong thư mục sdk/tools và cài API 10.
Cách khác : đặt lại APP_PLATFORM trong file Application.mk cho project và cho Irrlicht. Trong trường hợp này bạn nên thay đổi luôn android:minSdkVersion trong file AndroidManifest.xml (đạ test chay Android-19 OK)

Mô tả các FILES :
AndroidManifest.xml:
            Mọi ứng dụng Android cần 1 file này để mô tả những cái cần thiết cho ứng dụng. Tên này phải chính xác là tên AndroidManifest.xml.
Xem http://developer.android.com/guide/topics/manifest/manifest-intro.html
                                                             
build.xml:
            Ant sẽ biên dịch file để tạo gói cuối cùng (.APK)
            Bạn có thể tạo một mô tả riêng như trong tài liệu của Android documentation:
            http://developer.android.com/tools/projects/projects-cmdline.html
            Điều này sau đó sẽ cập nhật file project.properties.
project.properties
            Bao gồm nhiều đích biên dịch (và có thể là thuộc tính của các project khác). Phải có file này.

jni:
            Một thư mục tên này phải là thư mục con của thư mục có chứa file build.xml.
            Thông thường nó chứa các file nguồn (c/c++), trong trong trường hợp của chúng ta dùng ở mức thư mục cao hơn (cùng mức với LOCAL_PATH chứa file Android.mk).
             
jni/Android.mk:
            Makefile cho project.
            Source-files trong project được thêm vào LOCAL_SRC_FILES
            Trong ví dụ Irrlicht example nó còn có thể sao chép vào thư mục assets, nhưng bạn còn có thể tạo assets đúng chổ.
                                               
jni/Application.mk:
            File tùy chọn ví dụ như bỏ bớt các module đã được cài và bạn có thể đặt kiến trúc đích xác định. Xem thêm thông tin trong thư mục docs của ndk.
                                                           
res:
            Thư mục có các tài nguyên được phân phối cho ứng dụng của bạn và có thể truy cập thông qua ID.
            Thật không may đến bây giờ NDK không thể truy cập  tài nguyên này. Vì thế bạn phải bằng cách nào đó truy cập chúng thông qua java-code và sao chép vào c++ hoặc bạn phải HACK để đọc định dạng trực tiếp(Một vài ứng dụng đã làm điều này, nhưng nó không an toàn trong tương lai và google không khuyến khích việc này).
            Hãy xem qua mục "App Resources" trong tài iệu android developer, vì nó khá phức tạp.
            Chúng ta chỉ dùng nó để lưu các icons cho ứng dụng trong ví dụ này.
             
assets:
            Các file ơ đây được phân phối trong ứng dụng của bạn. Nó hoạt động như hệ thống chỉ đọc.
           
assets/media/Shaders:
            Mã Shader cho driver OGLES2 điều khiển mô phổng một loạt hàm cố định.
            Trong ví dụ của chúng ta các lệnh này tự động thực thi việc sao chép trong file Android.mk.
            Đường dẫn mà chương trình shaders tìm kiếm đặt trong IRR_OGLES2_SHADER_PATH định nghĩa ở trong IrrCompileConfig.h
            Các tên là hardcoded  vì thế nó phải được xác định phải có trong thư mục media/Shaders.
            Bạn có thể viết lại shaders, nhưng chắc rằng thêm các file shaders hoạt động được bằng các tên này.
            OGLES1 driver không cần các file này.

obj:
            Tất cả các đối tượng và các thư viện được đặt tại đây trước khi chúng được liên kết với nhau.

libs:
            Chứa mã nhị phân của ứng dụng của bạn sau khi biên dịch. Ứng dụng bản thân nó là một lib(cơ bản vì mã giả “native code” không thể chạy trực tiếp chỉ gồm một lib).

src:
            Thư mục src chỉ cần thiết khi bạn có mã nguồn Javavà chỉ có các file .java và.aidl.

            Dù ví dụ này không dùng Java nhưng do makefile tạo thư mục này vì lệnh ant build.xml trong android sdk cần nó.

12/6/16

USING 3DSMAX AS LEVEL EDITOR IN IRRLICHT

DÙNG 3DSMAX NHƯ LÀ TRÌNH BIÊN TẬP MÀN CHƠI TRONG IRRLICHT
3    3dsMax là một phần mềm 3D Editor rất mạnh , tại sao chúng ta không tận dụng nó để làm level Editor trực tiếp cho Irrlicht.Cách làm của mình như sau :
-         Xuất file khung cảnh trong Max sang dạng .X (bằng Panda Exporter) chú ý chọn Sub frame hierarchy)
-         

-         Như vậy sao khi ra file .X thì sẽ có kèm theo các bone để làm neo (archor) giúp cho việc tách các phần tử Mesh ra làm nhiều phần con một cách thuận lợi ! (các bone có tên như là group trong Max đã đặt tên)
-        
-         Vậy trong Irrlicht ta có hàm như :
void ConvertMeshBuffertoBullet(scene::IAnimatedMesh* mesh)
{
                if (mesh)
                {
                                scene::IAnimatedMeshSceneNode* anode = mySmgr->addAnimatedMeshSceneNode(mesh);
                                for (u32 i=0;i<mesh->getMeshBufferCount();i++)
                                {
                                                scene::SMesh* pMesh = new scene::SMesh();
                                                pMesh->addMeshBuffer(mesh->getMeshBuffer(i));
                                                vector3df pos =anode->getJointNode(i)->getAbsolutePosition();
                                                scene::IMeshSceneNode* Node = mySmgr->addMeshSceneNode(pMesh,0,-1,pos);
                                                //chuyen node thanh dang vat ly theo yeu cau cu the
                                                if (i==0) ::convertISceneNodeToRigidBody(Node,::btScalar(0),true);
                                                else ::convertISceneNodeToRigidBody(Node,::btScalar(5),true);
                                }
                                anode->remove(); /xoa node tam
                }

                  }

17/5/16

Auto Ragdoll using by Bullet in Irrlicht !

Tạo tư động tư thế chết cho mô hình 
- Trong lập trình game Ragdoll chính là tư thế chuyển tiếp lúc nhân vật đang hoạt động sang tư thế chết !
- Trước đây : người ta thường tạo hoạt cảnh tư thế chế cho nhân vật ,nhưng nó trông không thật và tốn rất nhiều tài nguyên làm hoạt cảnh
- Hiện nay , với sự trợ giúp của engine vật lý thì hoạt cảnh tư thế chết trông thật hơn nhưng mình thấy người ta tiếp cận theo kiểu là áp khung da vật lý cho mô hình trước và sau đó cho hoạt động trong game !  Với cách này thì tư thế Ragdoll sẽ rất thật và chính xác và tự nhiên ! Nhưng mình thấy có vấn đề như sau : nếu bạn có nhiều mô hình, với nhiều khung xương khác nhau thì bạn phải lần lượt áp vật lý cho từng nhân vật đó, công việc này thật mất rất nhiều thời gian ! Nhất là đối với Coder không rành về làm hoạt cảnh như mình !
Trích dẫn :
 - Cách tiếp cận của mình như sau : trong Irrlicht có hỗ trợ mô hình chuyển động bằng khung xương. Tại sao ta không tận dụng điều này một cách tự động. Ta cung cấp cho chương trình một Mesh có khung xương và áp vật lý cho nó ! Vậy là ta có chuyển động Ragdoll cho mô hình đó trong thời gian thực, nhược điểm của cách này là chuyển động của các khớp không thật cho lắp, nhưng nó lại có thể áp dụng cho bất cứ mô hình nào một cách tự động và thực hiện trong lúc chạy chương trình.
Mình đã mất rất nhiều thời gian mới hoàn thiện code này, nhưng như thế cũng đáng
Hình minh họa :



Kế hoạch kế tiếp :
Tạo hiệu ứng phá hủy mô hình một cách tự động (phá hủy không giới hạn) - như vậy thì game sẽ giống thật hơn. Để giữ tốc độ khung hình chấp nhận được, có thể mình làm hiệu ứng phá hủy nhưng không cần chính xác lắm nhằm đảm bảo tốc độ của chương trình



Bài đăng phổ biến