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

23/6/20

Thử làm hiệu ứng Fruit Ninja ! Chẻ đối tượng làm 2 phần !

Ngày xưa đã cũng từng chơi trò này rồi, rất hay và cuốn hút, bây giờ khi đang nghiên cứu hiệu ứng phá hủy (Shatter) cho các đối tượng vật lý mình quyết địnhlàm từ nhỏ đến lớn. Thật ra mình đã làm được hiệu ứng phá hủy với các đối tượng có khung bao lồi (Convex). Nhưng khi đến các đối tượng có khung bao bất kỳ thì.. chưa được. Bây giờ làm đầu tiên là chẻ đối tượng có khung bao bất kỳ làm 2 phần trước, nếu được thì tiếp tục cho hiệu ứng VoroNoise áp cho đối tượng này luôn! Một số ScreenShot đang thực hiện !

Mớt cát được Mesh trong Irrlicht thành 2 phần 


Clip !


Còn tiếp !

14/5/20

3DPathFinding : tìm đường 3D đơn giản trong game !

Chuẩn bị cho game mới,mình làm lại hệ thống trợ giúp tìm đường trong máy tính.
Hệ thống này được lập trình không yêu cầu độ chính xác cao mà chỉ cần gần đúng và nhất là phải có tốc độ xử lý nhanh để có thể chạy realtime trong game !
Mới làm được thế này thôi :
Ảnh minh họa :



Mình sẽ cập nhật thêm các nâng cáp tiếp theo !
Nâng cấp nhân vật khác !


Clip mới ! 

Mới làm xong phần nhân vật đi theo nhân vật chính !

Nhân vật bơi được ! (tạm đủ dùng thôi vì đây không phải nhân vật chủ lực),mình cũng đã làm nhân vật bay được xong rồi ! tương tự nhau thôi !

Còn tiếp !
Hoàn thiện tìm đường cho các loại nhân vật => làm xong phần Debug datda tìm đường !
Screenshot !


Clip mô tả hoạt động hệ thống tìm đường :


Phần giới thiệu này tạm xong ! => chuyển qua thực hiện phần khác : nhân vật đu dây, leo tường....tư thế chết Ragdoll  => lập trình cho nhân vật hành động !




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



24/11/14

CustomAnimator !

CustomAnimator  hỗ trợ vật lý 
SoftBody của Bullet !


Đến bây giờ mình đã làm được thêm CstomAnimator hỗ trợ thêm đang tương tác vật liệu mềm (như vãi, cao su) bên cạnh vật thể cứng RigidBody !
Mình cũng làm song song một dạng khác là dùng trực tiếp chuyền sceneNode thành dạng Rigid hay Soft một cách trực tiếp (cách này nhanh như khó lưu và nạp sceneNode, còn cách tạo cuatomAnimator thì lưu và nạp sceneNode hoàn toàn tự động do Irrlicht hỗ trợ)
Mình đang nghên cứu tiếp phần Ragdoll phục vụ cho tư thế hy sinh của nhân vật.
Và thêm một cái nữa là customAnimator hỗ trợ điều khiển nhân vật một cách tự động (máy điều khiển) và nhân công (người chơi điều khiền)
Clip của mình :

27/10/14

Convert Irrlicht SceneNode to Bullet Physic


CHUYỂN SCENENODE TỪ IRRLICHT SANG BULLET 


Từ trước tới giờ mình luôn làm theo chiều thuận, có nghĩa là từ Bullet engine chuyển sang render trong Irrlicht. Nhưng bây giờ mình làm ngược lại : là từ các Mesh có sẳn và cách nạp Mesh rất phong phú của Irrlicht mình chuyển nó qua định dạng của Bullet để có thể tương tác vật lý một cách hoàn hảo.
Bước đầu là mình chuyển các sceneNode  dạng Mesh của Irrlicht sang Bullet. Như clip kèm theo
Bước tiếp theo mình sẽ làm một cái Aminator trong Irrlicht có thể chuyển SceneNode có thể tương tác vật lý . Với cách làm này mình có thể lưu lại màn chơi và nạp lạisau đó một cách đày đủ !
Vậy là chuẩn bị làm game với đầy đủ các tương tác vật lý rồi !
Clip của mình :

Hẹn gạp lại các bạn trong chuyên mục kế tiếp - BulletAnimator !

3/10/14

Control Character in Bullet !

Điều khiển nhân vật trong Bullet !


Lâu quá rồi chưa làm gì hết ! Mới bắt tay làm lại cái này coi sao !
Với phần điều khiển nhân vật chắc chắn là mình sẽ cải tiến từ cái này lên, thêm vào các lựa chọn khác như cho máy tính điều khiển, thêm A* để tìm đường, AI cho các phản ứng.

Buồn ngủ quá ! Relax một chút !

1/4/14

VoronoiFracture + EnvShader !

Kết hợp hiệu ứng phá huỷ và
hiệu ứng khúc xạ chất liệu


Chuẩn bị làm game mình bắt đầu tích hợp các hiệu ứng phức tạp với nhau.
Mình vừa thử xong hiệu ứng phá vỡ đôi tượng cái này trong Bullet engine (mình dùng chất liệu giả sử là kính để nhận thêm hiệu ứng khúc xạ. Cái này trong Shader)
Kết hợp 2 cái lại thấy cũng rất hay
Sau đây là clip của nó : (đập kính,hay đập nước đá cũng được)



21/1/14

VoronoiFracture Demo Update !

Cập nhật hiệu ứng phá vỡ đối tượng

Chơi game OverLord II mình thấy cách nhân vật phá huỷ hầu như gần hết mọi thứ mà nhân vật chạm phải.Thấy rất hay và vì mình cũng đã làm xong hiệu ứng phá vỡ đối tượng.
Nhưng trong ví dụ đó của Bullet chỉ tạo một khối hộp ngẩu nhiên được làm bể sẳn rồi cho rơi xuống. Không thấy hiệu ứng phá huỷ trực tiếp.
Quyết định nâng cấp nó lên mình sẽ làm thành hiệu ứng có thể phá bể bất kỳ đối tượng nào. Trước hết là chỉ cần đập nhỏ đối tượng ra mà thôi.
Mất hết mấy tuần mới được có chừng này : đập nhỏ đối tượng ra làm các phần nhỏ hơn nữa. Nhưng chưa thể áp ảnh map cho đối tượng một cách chính xác thôi. Cái này cần nghiên cứu sau mới được.
Trước hết như thế này cũng tạm ổn.
Clip của nó :  


4/9/13

Upgrade character control

Nâng cấp phần điều khiển nhân vật (phần 1)

 
Mình quyết định bắt tay vô chuẩn bị làm game ! Vậy là trước tiên phải cải tiến phần điều khiển nhân vật trước coi sao cho được cái đã.
Phần điều khiển nhân vật lúc trước đi rất hay va chạm tường, không thể đánh hay nhảy. Bi giờ mình đã nâng cấp nó lên rồi thấy cũng đẹp chán. và do tích hợp với Bullet engine nên phần vật lý tương tác cũng tạm chấp nhận được.
Nhưng còn nhiều thứ phải làm nữa là cho nhân vật trèo tường hay trèo dây, bơi và đánh sau cho thật đẹp nữa.
Mình sẽ tiếp tục nâng cấp lên sau !
Clip của nó đây :
 


16/8/13

Auto convert animated Mesh to RagDoll

Tự  động chuyển Mesh hoạt cảnh sang
tư thế chết (RagDoll)


Mất chắc gần hơn 2 tháng mình mới có thể hoàn thành được cái này. Đây không phải là ví dụ chuyển từ Bullet sang Irrlicht mà do nhu cầu thực thế khi làm game.
2 tháng trước mình chỉ làm được hoạt cảnh tư thế chết cho chú mèo, còn bi giờ thì có thể nói là tất cả các Mesh có khung xương trong Irrlicht mình đều có thể chuyển nó sang RagDoll.
Vì sao mình mất nhiều thời gian thế này ? Cái này là do mình chưa nắm vững lắm cấu trúc SkinMesh của Irrlicht và các Constraint của Bullet. Mình phải đọc lại chúng thật kỷ. Cái này dính đến phần GLOBAL_SKIN của SkinedMesh và cách đặt các giá trị ban đầu cho nó khi áp giá trị toàn cục vào.
Cái thứ hai là các Constraint của Bullet sẽ có cách hành động rất kỳ lạ khi bạn gắn nó sai tham số số. Và cái quan trọng là phải đặt tham số Render lại cho riêng AnimatedMesh của Irrlicht khi tích hợp nó với Bullet ( phải reset lại Node của Bullet về giá trị ban đầu, loại bỏ góc quay....)
Nói chung là rất mệt, nhiều lúc chán quá muốn bỏ cái phần này đi nhưng cuối cùng mình cũng thành công.
 Sau đây là clip của nó, tuy chưa vừa ý lắm và cần cải tiến thêm nhưng tư thế RagDoll như thế cũng tạm ổn :

Sau ví dụ này mình sẽ nghiên cứu tiếp phần phá hủy trong thời gian thực (realtime shatter)

14/6/13

AutoRagDoll

Tự động tạo tư thế RagDoll cho Mesh có khung xương

 
Sau khi nghiên cứu gần hết các ví dụ của Bullet mình thấy nên tạo thêm cái này để bổ sung thêm cho Irrlicht đầy đủ hơn !
Không phải mesh nào có hoạt cảnh đều có hoạt cảnh chết đâu ! Ví dụ như hoạt cảnh chú mèo này chỉ có đi và đứng.
Sau khi áp cái hiệu ứng vật lý này vào thì chú mèo đã có hoạt cảnh chết rồi ! Không cần làm thêm hoạt cảnh chết, mà chưa chắc đã làm được !!!

Nhưng ! Hiện tại mình chỉ làm được hoạt cảnh này cho mô hình chú mèo này và một số mô hình khác nhưng không hiểu sao không áp dụng cho được tất cả các mesh có khung xương.

Mình sẽ có gắng nâng cấp chương trình này sau, cố sao cho có thể áp dụng cho toàn bộ các mesh có khung xương ! Hy vọng thành công !
Sau đây là clip của nó :

29/5/13

VoronoiFractureDemo

Hiệu ứng phá hủy trong Bullet (VoronoiFractureDemo)

Vừa xong mấy hiệu ứng cho chất liệu mềm, mình phát hiện ra vẫn còn một ví dụ trong Bullet rất hay mà suýt mình bỏ qua. Đó là hiệu ứng phá hủy trong Bullet.
Trong các ví dụ của Bullet có 2 hiệu ứng phá hủy nhưng cái VoronoiFractureDemo là cái hay nhất. Vì hiệu ứng phá hủy giống thật hơn nhiều, còn cái kia giống như là tách liên kết (mặc dù thực tế cả hai đều là vậy)
Mình đang định nâng cấp cái VoronoiFractureDemo này theo hướng giống như các Demo người ta thực hiện trên YouTube nhưng hiện thời mình chỉ có thể làm được đến mức này trước đã.
Clip của nó đây :
 
Hẹn gặp lại các bạn trong bài viết sau !   
 
 



21/5/13

SoftDemo (30 -31 )

Hai demo cuối cùng của SoftDemo (Init_TetraCube, Init_TetraBunny)


Nhìn bề ngoài thì 02 ví dụ cuối này rất đơn giản, không có gì đặc biệt, nhưng mình mât rất nhiều thời gian để có thể hiển thị cái tetraMesh trong Bullet sang Irrlicht.
Để tạo thành tetraMesh như thế này trong ví dụ 30,31 thì nó nạp sẳn. Bullet không biết có tạo tự động được nó không, nhưng hình như có người đã làm được.
Làm đến ví dụ này mình mới nhớ còn vài ví dụ nữa mà mình phải làm :
- Hiệu ứng phá hủy trong Buulet thông qua Demo : VoronoiFractureDemo
- Một ví dụ mình phải làm là nghiên cứu các khớp nối trong Bullet một cách chính xác.
- Tự tạo tư thế RagDoll cho mô hình có sẳn khung xương.
- Hoàn thiện các class để chuyển từ Bullet sang Irrlicht.
Sau đây là clip của nó :

18/5/13

SoftDemo (23-29)

SoftDemo (23-29) Init_ClusterSocket,

Init_ClusterHinge, Init_ClusterCombine, Init_ClusterCar, Init_ClusterRobot, Init_ClusterStackSoft, Init_ClusterStackMixed
Thật ra mấy cái ví dụ này mình cũng đã hoàn thành rồi,nhưng phải đọc lại cho hiểu mới được.
Init_ClusterSocket :  hiệu ứng khớp nối mềm giữa hình xuyến và một khối chữ nhật cố định, các vật thể có thể xoay mọi hướng,nhưng khoảng cách khôg đổ_ClusterHinge : :hình xuyến và khối chữ nhật kết nối với nhau bằng khớp nối trục, hai vật thể có thể xoay theo trục và khoảng cách chúng có thể thay đổi
Init_ClusterCombine : kết hợp 2 cái trên, giống như trục của bánh xe
Init_ClusterCar : là một chiếc xe thật sự
Init_ClusterRobot : là một robot có khã năng di chuyển bằng các chân hình cầu di chuyển được mọi hướng 
Init_ClusterStackSoft : tạo ngăn xếp các hình xuyến mềm xếp chồng lên nhau
Init_ClusterStackMixed : tạo ngăn xếp xen kẻ giữa hình xuyền mềm và khối hộp cứng
Sau đây là clip của nó :
 

11/5/13

SoftDemo (14-22)

SoftDemo (14-22)
(Init_Friction, Init_Torus, Init_TorusMatch, Init_Bunny, Init_BunnyMatch, Init_Cutting1, Init_ClusterDeform, Init_ClusterCollide1, Init_ClusterCollide2)



Mới hoàn thành việc phân tích các ví dụ trongSoftDemo từ 14-22 :
Init_Friction : Tạo một dãy các hộp mềm,sau đó tác động vào chúng cùng một tốc độ, tuy nhiên khác nhau là các hộp có độ ma sát khác nhau.
Init_Torus : nạp một hình xuyến mềm và áp dụng phép cắt cho nó.
Init_TorusMatch : nạp một hình xuyến mềm và áp dụng phép di chuyển cho nó.
Init_Bunny : nạp hình một chú thỏ, áp phép cắt
Init_BunnyMatch :nạp hình một chú thỏ,định hình ban đầu và di chuyển bằng mouse.
Init_Cutting1 : nạp một lưới vuông, treo 4 góc và cho phép cắt
Init_ClusterDeform : nạp một hình xuyến, cho phép biến dạng theo nhóm
Init_ClusterCollide1: Tương tự như ví dụ 1 nhưng khác là áp tham số cho nhóm
Init_ClusterCollide2 : nạp 3 hình xuyến xuyên nhau như dây xích, và cũng tác dụng theo nhóm đường nối.
Clip của nó đây :
 

Mình cũng vừa xem xong các ví dụ còn lạ, nhưng chưa kịp đưa clip lên, thôi để bài viết sau vậy.
 

7/5/13

Irrlicht Mesh to SoftBody

Chuyển Mesh từ Irrlicht sang Bullet


Mình đã thực hiện chuyển thành công các Mesh trong Irrlicht thành SoftBody được.
Mình thực hiện việc này là do hạn chế về việc nạp file trong Bullet (do Bullet hỗ trợ ít file 3D hơn Irrlicht).
Với thành công này thì mình có thể ápSoftBody cho bất cứ SceneNode (MeshSceneNode thôi) nàomà mình muốn nó trở thành SoftBody. Có thể treo nó vào đâu tùy ý hay là cho tác động vật lý tự do cũng được.
Vậy là với Bullet được render bằng Irrlicht, mình có thể  Covert bất cứ SceneNode nào thành đối tượng rắn (Rigid body) hay  đối tượng mềm (Soft Body) mà mình muốn.
Để nghiên cứu hết các ví dụ của SoftDemo xong thì mình sẽ bắt tay làm các Class hỗ trợ cho việc render bullet một cách hoàn chỉnh. Sau đó bắt tay làm game có hiệu ứng vật lý được rồi.
Clip : (clip được ghép từ  2 phần : phần đầu nạp mô hình Ninja chuyển nó thành SoftBody, phần 2 nạp một Hill Plane từ Irrlicht thành 10 bản và treo nó với 2 góc và áp hiệu ứng gió cho nó)


Hẹn gặp lại các bạn trong bài viết sau.

3/5/13

SoftDemo (12,13) ( Init_Aero, Init_Aero2)

SoftDemo ( Init_Aero, Init_Aero2) ( Chuyển động khí động học phần 1 và 2)
 
Init_Aero : Tạo hiệu ứng như là các mảnh giấy rơi . Mình xem mấy hiệu ứng này rất thích


Init_Aero2 :  Hiệu ứng 5 lá cờ bay trong gió, cái này thì chuyên nghiệp hơn là giả lập rồi.


Clip :

1/5/13

SoftDemo (6,7,8,9,10,11)

SoftDemo (Init_Sticks,  Init_CapsuleCollision, Init_Collide, Init_Collide2, Init_Collide3, Init_Impact)
Mình vừa hoàn thành một clip tổng hợp cho 6 Demo nhỏ của SoftDemo bao gồm các hiệu ứng sau :
Init_Sticks : Tạo một dãy các cây nhỏ và cho một quả cầu lớn rơi trên đó xem hiệu ứng thế nào
Init_CapsuleCollision : Phủ một vật thể mềm lên một cứng khối hình viên thuốc
Init_Collide : Tạo hiệu ứng 3 khối hình xuyến mềm xâu với nhau
Init_Collide2 :Tạo hiệu ứng 3 con thỏ mềm rơi chồng lên nhau
Init_Collide3 :Hiệu ứng 2 mảnh vải rơi chồng lên nhau
Init_Impact : Hiệu ứng khối h65p rơi trên que mềm ngắn.
Sau đây là clip của nó :


Mình vừa nâng cấp lên phần render cho vật thể mềm nhanh hơn một chút (bằng cách cập nhật Normal vector trực tiếp từ Node của SoftBody chứ không dùng Irrlicht để tính Normal vector nữa)

À : Sáng kiến mới của mình đây "Bơm nước từ giếng khoan lên bằng xe đạp) (học từ người khác thôi) đó là bơm nước dùng sức người để đạp xe. Mà mình cũng mài mò trên Youtube thấy hay lên làm theo. Chủ yếu là tập thể dục cho khoẻ đó mà.
- Vật liệu : ra chợ trời mua một cái đầu bơm có buly sẳn loại nhỏ thôi chứ nếu không thì không tể đạp nổi đâu.
- Thứ hai : Mua miếng ván vừa đặt chiếc xe đạp(xe có chống giữa) và gắn cái đầu bơm vô tấm ván, buly tiếp xúc với bánh xe sau.
- Nối ống vào ra cho đúng.
- Mồi nước.
- Ra sức trâu mà  đạp và thưởng thức thành quả. Mình Test rồi thấy cũng OK . Chắc sức mình bằng sức ngựa :)) .
Mình sẽ nhờ bà xã quay clip mình đạp cái xe này cho bà con xem nếu có thể nhân rộng mô hình mà tập thể dục :))
 

28/4/13

SoftDemo 3+4+5 (Init_Ropes,Init_RopeAttach,Init_ClothAttach)

Demo thứ 3,4,5 của SoftDemo (Init_Ropes,Init_RopeAttach,Init_ClothAttach)
 
Mình vừa hoàn thành thêm 01 clip tổng hợp cả ba Demo nhỏ nàybao gồm :
Init_Ropes : khởi tạo 15 sợi dây nhỏ được treo hai đầu
Init_RopeAttach : Treo một đối tượng bằng 2 sợi dây nhỏ và xem tương tác của nó
Init_ClothAttach : Treo một đối tượng rắn bằng một mảnh vải
Clip của nó :

Mình vừa hoàn thành xong việc chuyển SceneNode của Irrlicht thành một SoftBody hoàn chỉnh. Mình sẽ gởi clip của nó lên sau.
À vừa này mình chắc còn phải làm thêm SceneNode dùng đẻ hiển thị dây treo của Bullet trong Irrlicht mới được.

22/4/13

SoftDemo 02 + 03 (Int pressure + Init_Volume)

Demo thứ hai và ba của Softdemo
Hôm nay mình gởi thêm 02 clip nữa minh hoạ Demo thứ 2 và thứ 3 của SoftDemo trong Bullet . Được mình dùng Irrlicht để Render.  Cấu trúc 02 Demo này hoàn toàn giống nhau, chỉ khác là tham số dùng để khởi tạo chất liệu mềm mà thôi.
Init Pressure :

Init Volume :
Hẹn gặp lại các bạn ở những Demo tiếp theo.
À mình cũng vừa hoàn thành thủ tục localCreateRigidBody (chuyển từ Bullet sang) để tạo đối tượng vật liệu rắn nhanh nhất.

Bài đăng phổ biến