Trang

25/12/12

PVC air gun


PVC handpump

Tự chế bơm nước bằng tay
Số là nhà mình có khoan một cái giếng ngầm , cái máy bơm mình để trong nhà và do đó không thể gắn cái bơm tay !
Bực nhất là đêm mà hết nước, cu tý đang ngủ thì chịu ! không thể bơm nước bằng điện do nó ồn và mình chỉ cần vài xô nước để sài. Nếu có cái bôm tay thì hay biết mấy !
Tìm trên mạng thấy người ta làm cũng hay ! Nhưng bơm chỉ từ giếng lộ thiên lên thôi, còn mình là giếng khoan thì không dùng được. Nước không bơm lên nổi. Mình quyết định tăng áp suất của nó lên.
Đi tìm mua hết cái khớp nối,ống PVC mình chế cái bơm tay (có thể gắn sau cái máy bơm mà vẫn bơm nước từ giếng lên tốt) và làm luôn cái bơm xe nếu thích (mình bơm banh bóng chuyền , xe đạp... tốt)
Do mình đã dán keo rồi nhưng mìnhh cũng chụp hình lại và ghi chú thích rỏ, bạn nào thích thì làm theo chơi. Mình dùng nó để tậpthể dục cũng tốt đó !
Cấu trúc của nó :


Nhìn cận cảnh hơn :


Ráp hoàn chỉnh lại :



Vậy là khi cúp điện mà hết nước mình vẫn có thể dùng sức trâu của mình bơm lên một ít , vừa có cái tập thể dục trước khi đi tắm (Bơm nước lên bằng tay thì tha hồ mà mệt)
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 !
Bơm nước tự chế theo YouTube
Lập trình hoài cũng mệt, mà bận đi công tác hoài nên cũng chưa làm được gì. Khi dạo trên YouTube mình thấy cái này hay nên làm thử !




Nguyên lý làm việc của nó như sau :

Tại sao mình làm nó à : để xem nó có hoạt động giống như của người ta làm không ? và cần phải chỉnh thêm gì không ?
Kết quả :
Dựa vào sức nước đổ xuống, mình có thể trích một phần nước để đưa lên cao hơn (cái này phù hợp cho các nơi có dòng suối, miền núi, cao nguyên áp dụng cái này để đưa nước về nhà thì hay tuyệt).
Còn mình có cái mái nhà nóc bằng, lại đặt cái bồn nước ở trên cái nóc nhà đó, không có cách nào lấy nước mưa đưa vô bồn được nên mình làm hệ thống này để đưa nước mưa lên bồn Hi Hi !
Cần phải chỉnh gì không à ? chỉnh tùm lum hết ! Sau đây là kinh nghiệm của mình :
+ Phần van tạo áp lực nước : Dùng van một chiều lá lật là tốt nhất , nếu chỉnh được độ mở rộng của nó càng hay (phù hợp với lưu lượng nước vào nhiều hay ít)
+ Phần van đẩy nước lên (có thể dùng van nhựa có lò xo,hay van đồng lá lật đều tốt).Mình dùng nhựa cho nó rẻ !
Nhưng vừa làm xong thì chắc là hết mùa mưa rồi ! Chán quá !
* Kế hoạch kế tiếp : làm bơm piston đưa nước lên cao vận hành bằng chân (cái này khã thi đây, chắc tuần này làm) để đưa nước giếng lên , không dùng máy bơm !!!! TIẾT KIỆM ĐIỆM ĐỂ CHƠI GAME !!!!
Hẹn gặp lại các bạn !

À ! Irrlicht 1.8 mới ra lò rồi, bà con quan tâm down về nghiên cứu hé, mình cũng phải nâng cấp mấy cái code của mình chạy Irrlicht 1.8 đây !

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 dịch giới thiệu về A*


Đây là bài dịch của mình (dĩ nhiên là có bác google trợ giúp rất nhiều) nên còn rất nhiều chổ không thích hợp.Nhưng với các bạn đam mê lập trình game,nhất là tìm đường trong game thì mình thấy cũng rất hay !
Link gốc của trang này là :
http://theory.stanford.edu/~amitp/GameProgramming/index.html
Và link bài dịch của mình : (mình nén thành file rar ! Các bạn chạy file index.html là xong)
http://www.mediafire.com/?rfi1biq1d89inov
Mình dịch A* lại cho rỏ ràng hơn để mình có thể nâng cấp phần tìm đường trong game của minh hay hơn (hay có thể dùng A* cho ứng dụng nào đó khác)

Một số hiệu ứng nâng cao !
Mình vừa thực hiện đến phần nâng cao của các ví dụ chuyển từ RM (đến phần Advanced rồi) .
Sau đây là một số hiệu ứng :
1) Parallax Occlusion Mapping :


Cái này trong Irrlicht đã có cài sẳn,nhưng nó viết bằng lowlevel shader , còn cái này mình làm bằng shader 3.0, các bạn nhìn xem ! đẹp hơn rất nhiều !
2) Heat haze :


Tạo một vùng khí nóng bốc lên từ ảnh map xem rất thật.
3) MultiTone Car Paint Effect :


Mình đã thực hiện phần này, nhưng gần giống thôi (do hạn chế CubeMap của Irrlicht)
Sau đây là clip của nó :

Hiệu ứng màn hình (Sinh dữ liệu 2D)
Mình đã chuyển xong phần sinh dữ liệu 2D từ RM sang Irrlicht.. Các hiệu ứng đó bao gồm :
1 ) Dizzy : sinh dữ liệu là ảnh map liên tục xoay tròn phát ra từ tâm - rất chóng mặt


2) ECG : hiệu ứng giống như máy điện tim
3) Electricity : tia điện phát ra từ 2 điểm, nhìn rất thật


4) Graph : đồ thị có thể phóng to và thu nhỏ


5) NightSky: ảnh động bầu trời đêm
6) Waterfall : hiệu ứng thác nước đổ xuống trong rất đẹp.
Sau đây là clip của nó :


Mặt trời + Hiệu ứng vàng phát sáng + Làm mờ khi nhìn xa + Đổ bóng bằng ảnh Map
Đã chuyển sang phần nâng cao của các code shader chuyển từ RM sang Irrlicht.
Hiệu ứng chất liệu vàng chiếu sáng :





mình bị vướng ngay cái phần Blur của chương trình (nguyên nhân à : Irrlicht không hỗ trợ các hằng khai sẳn trong code Shader ! nên phải làm thành từng dòng code Blur (12 dòng))
Hiệu ứng hành tinh mặt trời :


mình chỉ vẽ cái mặt trời trong ví dụ Plannets củq RM do các cái kia thì làm trong Irrlicht nhanh hơn nhiều. Bạn thấy bầu khí quyển nóng bao quanh mặ trời không. Hạn chế : do Irr không hỗ trợ 3DTextture nên mình làm cái khác nó không đẹp bằng.
Depth of field :


đây cũng là một hiệu ứng nổi tiếng trong game.Cảnh vật nhìn xa sẽ trong có vẽ mờ hơn nhìn gần. Mình chỉ làm phần cơ bản.Nói chung cũng nhờ code Blur có trước đó.
ShadowMaping :


cái này thì còn hay hơn ! Đây cũng là điểm yếu hiện thời của Irr. Đó là đổ bóng thời gian thực, và các bạn thấy đó ! Bóng đổ của mình cực nhanh ! (nhưng thật ra không phải vậy đâu, nó chưa được tối ưu cho nhiều đối tượng) . Đây là hiệu ứng tạo bóng đổ bằng ảnh Map dựng trong thời gian thực.
Sau đây là các clip của nó :
GoldenShine :



Basic depth of field :


ShadowMapping :
Hiệu ứng đôi mắt kẻ ác phát sáng và làm mờ chuyển động






Bây giờ mình đã chính thức chuyển sang phần chuyển code nâng cao (multi pass) và hai ví dụ đầu tiên của mình là :
Đôi mắt kẻ ác phát sáng : khi di chuyển sẽ thấy đôi mắt sẽ sáng dần lên đến cực sáng khi đối diện - hiệu ứng này rất thích hợp khi trang bị cho quái vật một đôi mắt nhìn đã thấy ghê. Mình kết hiệu ứng này khi chơi serie game : "Soul reaver" và bi giờ thì hiệu ứng này đã có trong tay mình !
Clip :



Làm mờ chuyển động : Mình cũng đã thực hiện hiệu ứng này rồi ! Nhưng lúc đó làm bằng CPU Fate nên làm chậm FPS đáng kể, bây giờ thì nó hoàn toàn dùng GPU chứ không dùng CPU nữa ! He he ! Nhanh hơn rất nhiều !
Clip :


Chất liệu : Đá + Gổ và Hệ thống particle bằng Shader !
Mình mới hoàn thành 3 cái ví dụ Shader này và chuyển nó sang Irrlicht một cách gần đầy đủ.
Hiệu ứng đá :

Hiệu ứng gổ :

Hệ thống Particle :
+ Hiệu ứng con rắn :

+ Hiệu ứng lửa :

+ Hiệu ứng hệ thống hạt hình khối :

Mình phát hiện ra nhiều điểm nghịch khi chuyển code Shader từ RenderMonkey sang Irrlicht - Từ bây giờ mình cũng có thêm ít kinh nghiệm khi làm việc với mấy đoạn Code từ RenderMonkey rồi (có thể là các đoạn code Shader khác cũng tốt)
Đó là :
+ Hệ thống tọa độ trong Irrlicht.
+Các phép tích với các ma trận chuyển đổi
+Một vài ma trận chuyển đổi bị Invert khi phải chuyển qua Irrlicht thì mới đúng hiệu ứng so với khi để trong RenderMonkey.
Sau đây là các clip của nó :
Hiệu ứng đá :

Hiệu ứng gổ :



Hệ thống hạt :
Vậy là mình có thể tiến tới làm tiếp chuyển các code khác khó hơn từ RenderMonkey rồi ! Hẹn gặp lại các bạn !
Nâng cấp hiệu ứng phát sáng và tạo hiệu ứng cánh bướm

Hiệu ứng cánh bướm :

Chắc dạo này tốc độ chuyển code của mình từ RenderMonkey sang Irrlicht nhanh hơn rồi. Lại lên Level nữa rồi
Hiện giờ mình chỉ chú tâm chuyển code Shader từ RenderMonkey sang Irrlicht sao cho nó chạy ổn là tốt rồi (vì mình cũng định như vậy thì vừa học Shader trên RenderMoneky vừa học Irrlicht luôn một thể)
Kết quả là mình đã có thể hiểu RenderMonkey về cơ bản !
Còn Irrlicht thì mình cũng thấy các hạn chế của nó khi thực hiện Shader !
Mình đãnâng cấp lại cái hiệu ứng tự phát sáng
Clip hiệu ứng tự phát sáng.



Hiệu ứng cánh bướm : đây là hiệu ứng rất đẹp, y như cánh bướm thật, khi mình di chuyển sẽ thấy màu trên cánh bướm thay đổi theo.
Bug : phải chỉnh lại gốc texture trong Shader vì khi chuyển model từ renderMonkey sang nó bị sai tọa độ map.
Clip hiệu ứng cánh bướm :

HIỆU ỨNG LẤP LÁNH VÀ TỰ PHÁT SÁNG CHUYỂN TỪ RENDERMONKEY SANG IRRLICHT
Hiệu ứng Gliitering :


Hiệu ứng Illumination :



Mới làm thêm được 2 hiệu ứng mới là hiệu ứng lấp lánh và hiệu ứng tự chiếu sáng.
Hiệu ứng lấp lánh : giống như có kim tuyến trong chất liệu.
Hiệu ứng tự chiếu sáng : có 5 hiệu ứng riêng lẻ gồm (chiếu sáng bằng vertex hay bằng pixel hay cuộn hay chiếu sáng bằng điểm ảnh, chiếu sáng có phản chiếu môi trường , chiếu sáng bằng ánh sáng phổ mạnh ) :
sau đây là clip clip của nó :
Hiệu ứng Gliitering :



Hiệu ứng Illumination :

Tạo nhiễu giả 3D trong Shader !

Vì Irrlicht không hỗ trợ 3DTexture nên mình buộc phải làm cách này (không thật lắm nhưng giải quyết được hầu hết các trường hợp)
Một lệnh tex3D trong Shader có thể được thay bằng 3 lệnh (2 lệnh tex2D và một lệnh lerp )
Các bạn xem trong mục sau :
http://irrlicht.sourceforge.net/forum/viewtopic.php?p=152878
Từ đó mình đã nâng cấp lại các phần Shader mình đã tạo trước đó gồm có :
FireShader (trừ phần Lava không đẹp hơn cái củ nên mình bỏ, phần hiệu ứng khí quyển)
Sau đây là Clip về FireShader mới (nhìn đẹp hơn nhiều)

Hiệu ứng lửa chuyển từ RenderMonkey
Mình đã chuyển xong ví dụ về hiệu ứng lửa từ RenderMonkey
Các hiệu ứng bao gồm :
1) Fire effect : tạo hiệu ứng ngọn lửa nhỏ. Chuyển code từ RenderMonkey sang Irrlicht bình thường chỉ trừ việc phải thay đổi định dạng file .tga do nó chỉ có 256 màu mà Irrlicht không hỗ trợ.
ScreenShot :


2) FireBall : hiệu ứng quả cầu lửa đang bay. Khó khăn là phải chuyển từ Tex1D, Tex3D thành Tex2D trong Shader (Do Irrlicht không hỗ trợ định dạng này)
ScreenShot:


3) Inferno : Tường lữa : khó khăn tương tự như FireBall nhưng cũng khắc phục xong.
ScreenShot :


4) Lava : nham thạch cũng đã thực hiện xong.
ScreenShot :


Nói chung cái hiệu ứng nào chuyển từ RenderMonkey sang đều có ít nhiều khó khăn mà mình phải tự tìm cách khắc phục.
- Hiệu ứng cuối cùng :Explosion ! Nổ :
ScreenShot :

Chuyển Anisotropic shader từ RenderMoney


Thành công tiếp tục đây ! Bước đầu mình làm hoàn thiện cái ví dụ về Anisotropic shader !
Dĩ nhiên là nó không đẹp bằng khi Render trong RenderMonkey do Irrlicht có một số hạn chế (CubeMap và 3DTexture)
Nói chung là nhìn cũng tạm ổn,chạy cũng khá (nhưng không hiểu sao chậm hơn trong RenderMonkey rất nhiều.
Sau đây là clip của nó : (gồm satin shader và brushMetal shader )

Và clip này thì chỉ có Satin Shader thôi !

Chuyển ví dụ ShowComponents từ RenderMonkey sang Irrlicht


Mình cố gắng chuyển càng nhiều các ví dụ hiệu ứng từ chương trình RenderMoney sang Irrlicht.
ShowComponents là một ví dụ hay. Ban đầu mình chỉ có thể làm đến 3 phần đầu của nó do đến biNormal và Tangent thì kết quả hoàn toàn khác nhau !
Tìm mãi trên diễn đàn, đọc tới đọc lui mất mấy ngày nay cuối cùng cũng ra lý do.
+ Thứ nhất phải chuyển Mesh của Irrlicht sang Tangnet trước
+ Thứ hay phải à phải chỉnh lại phần vertexShader (phần Input) sao cho nó có thể hiểu được dữ liệu Tangent của Irrlicht ! Cái này mới khó.
Và sau bao nhiêu cố gắng mình cũng thành công rồi ! Lại lên Level nữa rồi.(được thêm 1 mẹo nữa)
Sau đây là clip của nó :

MỘT VÀI HIỆU ỨNG VỚI NƯỚC



Mình bị mấy cái hiệu ứng này hành hết gần 1 tuần !Bây giờ thì có thể nói là tạm ổn.
Mục đích mình thực hiện các hiệu ứng này là mình cần thêm hiệu ứng mặt nước (rợn sóng + phản chiếu + khúc xạ) vì mình thấy làm game bây giờ mà thiếu cái này coi như là thiếu hết vẽ đẹp của game.
Mình chuyển code của nó từ RenderMonkey ! Nhưng phải chỉnh nhiều lắm do Irrlicht engine không hổ trợ 3DTexture và CubeMapping đành phải chuyển qua 2DMapping nên cũng bị xấu đi phần nào ! Kế tiếp trong ví dụ của RenderMonkey chỉ là dùng Map tĩnh còn mình dùng thực sự là Map động (tự động phản chiếu các đối tượng khác thêm
vào)
Kết quả đây !





Sẳn làm xong phần rợn sóng và phản chiếu mình làm tiếp phần khúc xạ : kết quả cũng không tệ lắm
Kết quả :









Vẫn còn một số bug trong Shader mình cần khắc phục, nhưng như vậy cũng ổn. Mình sẽ làm luôn một cái Class gọi là WaterShader để dùng riêng cho các hiệu ứng này (Lúc đó thì phải dùng cả OpenGL và DX rồi)

Hướng dẫn cài đặt và dùng Irrlicht engine

Hướng dẫn cài đặt và dùng Irrlicht engine

1) Irrlicht engine là gì :

Irrlicht engine là một engine đồ họa, không phải game engine. Nó bao gồm một hệ thống thư viện hỗ trợ cho người dùng về mặt đồ họa 2D và 3D .Có thể chạy đa hệ điều hành do nó dùng bộ dựng hình từ DirectX hay OpenGL. Cụ thể thế nào thì các bạn vào http://www.Irrlicht.sourceforge.net/ để xem.

2) DownLoad và cài vào máy :

Địa chỉ download nó là : http://www.Irrlicht.sourceforge.net/ vào mục download để down về (hơn 20Mb). Nó là một file nén

Giải nén nó vào một vị trí nào đó : ví dụ trên máy mình là : G:\\mygame\

Bạn sẽ có thêm thư mục G:\\mygame\Irrlicht-1.7.2\

Cấu trúc thư mục của Irrlicht bao gồm :

\bin\Win32-VisualStudio : chứa tự viện Irrlicht.DLL và một chương trình Demo và một vài ví dụ đã biên dịch sẳn. Hãy chạy nó để xem nó thực thi như thế nào trên Window.

\doc : Tài liệu về Irrlicht engine

\examples: Các ví dụ và bài hướng dẫn về cách dùng Irrlicht engine viết bằng C++.

\include : Các tệp tin Header để chèn vào (Include) khi lập trìh với engine.

\lib\Win32-visualstudio\ Các thư viện liên kết với chương trình khi dùng engine.

\media : Tài nguyên đồ họa và âm thanh dành cho Demo và các ví dụ.

\source : Mã nguồn của Irrlicht engine. Phần mã này không cần thiết trong phát triển ứng dụng bằng engine,nhưng nó được thêm vào để có thể biên dịch lại engine khi cần thiết và phát hiện lổi của engine.

\tools : Các công cụ hữu ích (gồm cả mã nguồn) của engine.

Bạn không cần phải build lại engine mà cứ dùng trực tiếp những cái phân phối sẳn có (vì nếu build lại bạn cũng không có đủ thư viện để build đâu DX 9.0, Dx 8.0…)

3) Điều chỉnh IDE để có thể dùng Irrlicht :

Mình chỉ hướng dẫn các bạn dùng với VC++2008 (còn VC++2011 hay hơn thì các bạn tự nghiên cứu hé)

Chạy VC++2008 lên : (lưu ý mình cài Irrlicht engine trong máy mình ở thư mục G:\\mygame)

Bạn hiệu chỉnh phần Include và lib trong mục Tool ->Option->Projects and Solutions-> VC++ Directories như hình sau :

Phần Include :






Phần libs



4) Xây dựng ứng dụng đầu tiên dùng Irrlicht engine :

Bạn hãy tạo một thư mục riêng để lưu các đề án của mình ( mình tạo thêm thư mục trong e:\mygame là newproject : nên đường dẫn của mình là : G:\mygame\ newproject)

Trong VC++2008 vào file -> new project : (chọn win32 Console Application – tên project là IrrHello bọ chọn Create directory for solution) như của mình







Sau đó nhấn OK

Nhấn tiếp Next

Chọn tiếp như hình sau :






Nhấn Finish : vậy là xong phần tạo project :
Vào phần project của VC++2008 chọn add new Item -> code -> c++ file (.cpp) và đánh tên tệp tin chính tạo mới là main như hình sau :










Nhấn Add :

Sau đó chép phần code này vào (làm biếng thì copy and paste)

/** Example 001 HelloWorld

#include

using namespace irr;

//

using namespace core;

using namespace scene;

using namespace video;

using namespace io;

using namespace gui;

//

#ifdef _IRR_WINDOWS_

#pragma comment(lib, "Irrlicht.lib")

//#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")

#endif

int main()

{

IrrlichtDevice *device =

createDevice( video::EDT_SOFTWARE, dimension2d(640, 480), 16,
false, false, false, 0);

if (!device)

return 1;

device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");

IVideoDriver* driver = device->getVideoDriver();

ISceneManager* smgr = device->getSceneManager();

IGUIEnvironment* guienv = device->getGUIEnvironment();

guienv->addStaticText(L"Hello World! This is the Irrlicht Software renderer!",

rect (10,10,260,22), true);

IAnimatedMesh* mesh = smgr->getMesh("../../Irrlicht-1.7.2/media/sydney.md2");

if (!mesh)

{

device->drop();

return 1;

}

IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );

if (node)

{

node->setMaterialFlag(EMF_LIGHTING, false);

node->setMD2Animation(scene::EMAT_STAND);

node->setMaterialTexture( 0, driver->getTexture("../../Irrlicht-1.7.2/media/sydney.bmp") );

}

smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));

while(device->run())

{

//

driver->beginScene(true, true, SColor(255,100,101,140));

smgr->drawAll();

guienv->drawAll();

driver->endScene();

}

//

device->drop();

return 0;

}

Nhấn F7

Chép tệp tin Irrlicht.dll trong thư mục Irrlicht\bin\Win32-VisualStudio vào cùng thư mục với project mình vừa tạo (ở đây là G:\myGame\Newproject\IrrHello)

Nhấn F5 và xem thành quả của mình


5) Lời kết :

Đây là phần hướng dẫn sơ lược dành cho các bạn mới bắt đầu nghiên cứu Irrlicht engine. Hy vọng nó sẽ bớt đi rất nhiều thời gian và công sức để các bạn làm quen với engine này. Chúc các bạn thành công.

Các bạn có thể góp ý với mình qua email : trivtn@yahoo.com hay vào

blog của mình : http://trivtn.blogspot.com



Bài đăng phổ biến