Trang

Hiển thị các bài đăng có nhãn Tích hợp Bullet engine. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Tích hợp Bullet engine. Hiển thị tất cả bài đăng

20/4/13

First SoftDemo (Init_Clocth)

Demo thứ nhất của SoftBody (Init_Cloth)
Demo này khởi tạo một lưới kích thước 8x8 có 32x32 ô nhỏ là vật liệu mềm
Và  khởi tạo thêm một chồng các  vật liệu cứng rơi trên nó.
Mình đã thêm vào 2 chế độ là render trực tiếp từ dữ liệu của SoftBody và thứ 2 là dùng SceneNode để hiển thị SoftBody (cách sau thì cho tốc độ khung hình nhanh hơn thấy rỏ)
Sau đây là Clip ban đầu :

Clip nâng cấp :

Phải từ từ nghiên cứu hết các ví dụ nhỏ của SoftDemo thôi !
Sau đó mình sẽ bắt tay làm game !

16/4/13

Some ScreenShot of SoftBody Demo (from Bullet to Irrlicht)

 Một số hình ảnh của SoftBody Demo !
 
 Mất hết mấy tuần mình mới làm được phần này ! Phải nói là cực kỳ khó.
Hiện giờ mình chỉ render softbody một cách thủ công nên tốc độ khung hình rất chậm (chừng 40 fps hay nhanh hơn chút ít mà thôi). Mình sẽ cải tiến lại sau.
 
Sau đây là một số (gần như toàn bộ các ScreenShot) của SoftDemo đây :
 
 
Như các bạn thấy có hơn 30 Demo nhỏ của từng phần trong SoftDemo (nhưng Bullet đã tích hợp rất
hay nên khi chuyển mình chỉ làm 1 lần là hết).
Mình sẽ đưa từ từ từng clip của từng Demo lên sau vì nó rất nhiều ! Gom lại một clip thì quá lớn)
Vậy là mình đã cơ bản hoàn thành việc tích hợp Bullet engine vào trong Irrlicht rồi (lên level nữa rồi)
Nân cấp việc render softbody lên thành sceneNode thực sự là xong - vậy là bắt tay làm game có hiệu ứng vật lý được rồi.


5/3/13

ConvexDecompositionDemo from Bullet to Irrlicht

ConvexDecompositionDemo chuyển từ Bullet sang Irrlicht

Vướng cái Demo này mất hết gần 1 tuần chỉ do mình áp dụng quá máy móc từ các ứng dụng trước . Cuối cùng cũng thành công rồi.
Mình cũng vừa nâng cấp lên dùng thư viện âm thanh SFML 1.6 hoạt động tốt (Do mình sai từ cái sai của bảng SFML 1.5 - mỗi source phải có 1 buffer riêng.
Sau đây là clip của nó :

Hẹn gặp lại các bạn sau !

20/2/13

FractionDemo from Bullet to Irrlicht

FRACTIONDEMO HIỆU ỨNG KẾT DÍNH VÀ BẺ GẢY LIÊN KẾT
 

Đây là một Demo về việc tạo kết dính và tách kết dính của các đối tượng.
Mình đã phải đọc source của Bullet để xây dựng lại hàm Render cho các đối tượng trong Irrlicht hiển thị được các Object của Bullet một cách chính xác. (Phải thêm hàm nhân ma trận trong chuổi render)
Clip của FractionDemo :

À ! Mình cũng cải tiến lại cái Demo đua xe cho nó thực hiện trên bề mặt địa hình gồ ghề !
Clip của VehicleDemo mới :

13/2/13

ForkLiftDemo from Bullet to Irrlicht

Chuyển ForkLiftDemo từ Bullet sang Irrlicht !


Mới chuyển xong một cái ví dụ nữa từ Bullet sang Irrlicht !
Cái ví dụ này mô phỗng một chiếc xe nâng hàng ! Nó là bước nâng cao hơn của ví dụ Vehicle vì nó có thêm thanh nâng hàng có thể di chuyển lên xuống để nâng đồ vật. Xe có thể di chuyển tới lui một cách tự do .
Làm xong cái ví dụ này mình mới phát hiện thêm một cái thủ thuật nữa là hiển thị Compound Object bằng SceneNode trong Irrlicht. Cái chính là phải có cái góc empty SceneNode là trục chính. Vậy là phần render dùng cho compound Object mình bỏ luôn mà nó vẫn hoạt động hiệu quả !
Sau đây là Clip của nó :


Mình sẽ đăng thêm bài mới khi làm được thêm cái gì đó !

11/2/13

VehicleDemo

Chuyển VehicleDemo từ Bullet sang Irrlicht


Mình mới suy nghĩ ra cách làm cái này hôm nay (lúc ngủ trưa). Bây giờ mình phải tạo thêm hàm Render dùng riêng cho đối tượng là  compound trong Bullet rồi. Vậy nó mới tạm ổn như vậy.
Đây là bước khởi đầu để mình có thể làm được game đua xe đây (vật lý nhé không còn giả nữa)
Vì là Demo nên mình chỉ làm thế này ! Chừng nào ra Demo khác về điều khiển xe cộ thì mình sẽ làm đẹp hơn !
Clip của nó đây (do mình đã giảm bớt độ phân giải nên không còn đẹp nữa . Để up cho nhanh mà)


Hẹn gặp lại các bạn trong bài viết sau ! Chúc một năm mới thành công !

31/1/13

CharacterControl Demo (Bullet to Irrlicht)

Điều khiển nhân vật có tương tác vật lý !


Đến phần điều khiển nhân vật này thiệt là đau đầu ! Lúc mình chuyển Code từ Bullet sang thì nó cứ xoay ngược (do Code của Bullet là RightHang còn Trong Bullet là LeftHand axis) Cuối cùng thêm dấu trừ vào thì ổn hết. À mà còn phải cải tiến phần Render riêng cho Character trong Irrlicht nữa.
Mình lấy nhân vật là Ninja có sẳn trong  media  của Irrlicht và cái Map cũng là của Irrlicht luôn cho tiện và dĩ nhiên cũng cho thấy mình đã chuyển code thành công từ Bullet sang Irrlicht.
Mệt ! Mới cài thêm cái CamStudio để lưu lại màn hình và âm thanh để đưa lên Youtube luôn
Xong phần này mình sẽ nghiên cứu tiếp phần điều khiển xe trong Bullet và phần vật thể mềm (Đây là phần mình thích nhất đó)
Clip CharacterControl :
Hẹn gặp lại các bạn trong bài viết tới !

19/1/13

Convert Irrlicht bspMesh to Bullet

Chuyển bspMesh từ Irrlicht sang Bullet
 
Nếu các bạn xem qua các ví dụ Irrlicht thì chắc không lạ gì cái Map QUAKE của Irrlicht (như trong ví dụ 2)
Mình cũng dùng ví dụ 2, Nhưng tích hợp thêm hiệu ứng vật lý cho MAP QUAKE này. Thật tuyệt vời.
Đúng là khi làm thêm được gì mới thì mình cũng thấy rất vui! Hôm qua còn làm thêm cái súng lò xo nhưng chưa làm được phần cò súng (bắn thằn lằn thôi - sẽ có hình sản phẩm khi hoàn thành)
Sau đây là clip của nó :
Tiếp theo mình sẽ dùng cách này để chuyển mô  hình địa hình sang Bullet xem có hay hơn không chứ dùng HeightMap của Bullet thấy không chính xác lắm.

16/1/13

Convert Irrlicht Mesh To Bullet Mesh

Chuyển đổi mô hình từ
Irrlicht vào trong Bullet !
Khi thực hiện chuyển đổi từ ví dụ của Bullet sang Irrlicht mình toàn lấy toàn bộ code từ Bullet và sau đó mới xây dựng các hàm vẽ các mô hình phù hợp.
Bây giờ mình làm ngược lại (chính xác là thuận) đó là nếu mình có một mô hình 3D trong Irrlicht thì làm sao áp Bullet cho nó để có thể tương tác với nó một cách hoàn chỉnh.
Có hai cách đó là dùng ConvexHull (khung bao lồi tối ưu) có số đỉnh trong Bullet nhỏ hơn hay bằng số đỉnh của nó trong Irrlicht. Cách này phù hợp với các mô hình mà không cần va chạm đến từng chi tiết.
Cách thứ hai là dùng bvhTriangleMesh có số đỉnh hoàn toàn giống từ Bullet sang Irrlicht. Cách này phù hợp cho địa hình (như nhà, đồi núi, hang động hay các mô hình lớn) mà nhân vật có thể đi chuyển bên trong.
Kết quả mình làm cũng khá tốt :
Đối với ConvexHull :

Đối với bvhTriangleMesh :

5/1/13

Thêm âm thanh vào ví dụ Irrlicht tích hợp Bullet

Thêm âm thanh vào ví dụ Irrlicht tích hợp Bullet


 
Tích hợp âm thanh (dùng Sound Engine khác) mình đã làm nhiều rồi,nhưng tích hợp âm thanh vào các ví dụ của Bullet (khi dùng Irrlicht để render) thì mình mới làm.
Mình chọn cái ví dụ để làm đầu tiên là CcdPhysicDemo mình làm thêm âm thanh và hiệu ứng va chạm cho cu tý nhà mình chơi thích hơn.
Kết quả ban đầu rất khã quan. Mình dùng các code ở : http://www.bulletphysics.org/mediawiki-1.5.8/index.php/Collision_Callbacks_and_Triggers để tạo âm thanh khi có va chạm xảy ra. Còn âm thanh khi bắn khối hộp thì do mình thêm riêng vào.
Mình dùng SFML phần Sound để xuất âm thanh.
Sau đây là clip của chương trình :

Mới cập nhật !

25/12/12

Tích hợp Bullet vào Irrlicht : DynamicControlDemo !




Hôm nay mình trình làng một Demo mình đã chuyển thành công là : DynamicControlDemo
Đây cũng là một ví dụ thuộc loại tạo các liên kết và khung xương, rất hạy và ấn tượng !
Mình đang tiếp tục nghiên cứu phần tạo Ragdoll tự động (từ mo hình hiện có) nhưng đang quá khó đây !! HIC !
Thôi mình xin trưng lên Clip của Demo :

Tích hợp Bullet và Irrlicht : Ragdoll demo !


Ragdoll (tư thế chết) có thể thực hiện bằng hoạt cảnh trực tiếp trên mô hình nhân vật hay bằng cách khác mà mình đang làm đây,đó là : tích hợp với hiệu ứng vật lý.
Theo ví dụ thì cơ thể nhân vật được chia là 11 phần và có 10 khớp chuyển động (mổi khớp có một giới hạn chuyển động riêng).
Bullet sẽ làm cho nhân vật (có gắn các khớp giới hạn) chết một cách đẹp mắt và tự nhiên nhất
Còn Irrlicht sẽ đãm nhiệm việc render khung cảnh.
Nhưng đây chỉ là Demo, còn việc chuyển từ mô hình nhân vật thực tế (như con người, con thú, hay quái vật...) thành dạng Ragdoll thì không dễ dàng chút nào. Khi nhân vật còn sống thì các cữ động của nhận vật chuyển động theo hoạt cảnh dựng sẳn, nhưng khi chết thì phải chuyển nó thành dạng ragdoll và giao cho Bullet mô phổng nó sao cho thực nhất, ta không cần phải làm hoạt cảnh này trong lúc xây dựng mô hình nữa.
Mình đang nghiên cứu cách tạo Ragdoll một cách tự động không phụ thuộc mô hình mà bám theo cấu trúc khung xương nhân vật hiện có để tạo cấu trúc ragdoll tự động (cái này rất khó đây,mình phải nghiên cứu nhiều).
Sau đây là clip của nó :

Tạo khung xương cơ bản !


Bận công tác hết mấy tuần, mới cơ bản quay lại lập trình, mình bắt tay làm ngay cái demo khung xương cơ bản (dành cho các tư thế chết, ngã....).
Mình thích nhất phần này trong engine vật lý, nhưng demo sau chỉ là cơ bản. Còn làm cách nào áp cái này vô khung xương của mô hình có animation thực sư thì là một chuyện khác à nghe !
Chắc là mình sẽ chuyển cái mô hình ninja có sẳn trong /media của Irrlicht sang dạng ragdoll này xem sao ? Chưa biết có làm nổi không nữa.
Thôi ! Các bạn xem tạm clip của nó (mình chuyển code từ Bullet sang và dùng Irrlicht 1.8 mới)

Hẹn gặp lại các bạn sau !

Tích hợp địa hình từ Irrlicht vào bullet


Mới đi công tác về , gần hết 1 tháng, mệt quá !
Nhưng mình lại học được thêm nhiều thứ có lợi cho công việc của mình.
Cái Demo này mình mới hoàn thiện hôm nay.Mục đích của Demo này là chuyển đổi địa hình từ Irrlicht vào bullet nhằm có thể kiểm tra va chạm cho địa hình bằng bullet.
Bước đầu mình cũng có thể nói là thành công.
Mình đang làm đén phần RigidBody, nhưng phần này không dễ chúc nào !
Các bạn xem clip TerrainDemo :



Hẹn gặp lại các bạn trong Entry sau !
Thêm ba ví dụ mới chuyển từ Bullet sang Irrlicht
Mình mới làm thêm được 3 ví dụ chuyển từ Bullet sang Irrlicht đó là :
1) ConcaveRaycastDemo : tia dò sẽ tự động kiểm tra các đối tượng khi va chạm
ScreenShot :




2) ConcaveConvexcastDemo : các đối tượng nằm trên địa hình di động, với số đối tượng là 400
ScreenShot :




3) MovingConcaveDemo : nạp mô hình con thỏ, shoot mesh là hình chú thỏ luôn, nó sẽ tự kiểm tra va chạm khi di chuyển
ScreenShot :




Hiện mình đang tới các ví dụ khác khó làm hơn rất nhiều nên chắc tốc độ chuyển sẽ chậm hơn !
Mình đang vướng với ví dụ chia nhỏ đối tượng tự động (phá vở đối tượng)
Thêm một vài ví dụ từ Bullet engine mới làm được !
Mình vừa hoàn thành thêm một số ví dụ nữa khi tích hợp từ Bullet và Irrlicht (tiến độ nhanh hơn rồi) đó là : MultiMaterialDemo, UserCollisionAlgorithm và ConcaveDemo.
Hình minh họa ConcaveDemo :



Sau đây là clip của nó :

UserCollisionAlgorithm :



ConcaveDemo :

Mình tiếp tục nghiên cứu đây ! Hẹn gặp lại các bạn trong bài sau !
Bài 2 : CcdPhysic - tích hợp Bullet và Irrlicht engine
Mình vừa làm lại toàn bộ lesson 1 của Bullet (nhưng là tích hợp với Irrlicht engine)
Mình đã tách các phần cần thiết cho việc tích chợp bullet vào Irrlicht (như các biến, các hàm vẽ...) thành một tập tin riêng để tiện cho việc phát triển sau này.
Bây giờ thì chỉ việc dán code từ các lesson của Bullet qua và chỉnh thôi. Tạm thời mình không viết class giống như các ví dụ của Bullet mà tách ra thành từng hàm riêng đặt trong tệp tin man.cpp
Vừa làm xong cái bài cơ bản thì mình bắt tay đến lesson 2 của nó là CcdPhysic demo !
Sau đây là clip của nó :
Vậy là tạm xong bài 2 - mình đang tăng tốc học bullet đây ! Thích nhất là Ragdog và chất liệu mềm !
Hẹn gặp lại các bạn sau !
Tích hợp Irrlicht và Bullet engine ! (bắt đầu)
ScreenShot :


Mình đang chuyển qua giai đoạn tích hợp engine vật lý vào Irrlicth !
Engine vật lý mình chọn là Bullet engine ! (đừng hỏi lý do với mình - hỏi google ấy : free đối với mình là chính + source )

Mình cũng mớichỉ bắt đầu chuyển cái ví dụ từ Bullet sang tích hợp trong Irrlicht thôi (Irrlicht dùng để render còn Bullet xử lý vật lý). Nhưng còn thiếu phần picking đối tượng.
Sau đây là clip của nó :

Link download ( mới xong)
http://www.mediafire.com/?w6v8wmc24d857oe

Bài đăng phổ biến