Just Simple 3D Tutorial

Strip 3: Ngisi Majibu part 1, Travian

Posted in cartoon strip by Adminnye on 20 November 2008

strip31
Kebetulan akhir2 ini gue sering majibu alias makan gaji buta. Buat mengisi kegiatan majibu, gue sengaja cari2 kegiatan. Kebetulan gue liat temen disebelah ada yang maen game online travian. Tapi baahhh, bikin satu bangunan aja bisa berjam-jam. Sama aja tetep majibu, gak ada bedanya. Pada akhirnya gue memilih untuk membuat blog aja dan lahirlah blog ini. Kayaknya bisa jadi sejarah ntar, hehehehehe..

Iklan
Tagged with:

XNA Tutorial 6: Membaca Input Keyboard

Posted in XNA by Adminnye on 20 November 2008

Pengolahan inputan pada XNA sangatlah mudah bila dibandingkan dengan DirectX. Kita langsung aja ke tutorial. Buka kembali XNA Tutorial 5, kemudian buka file Game1.cs. Tambahkan variable global berikut pada root classnya:

private float sudutPutar = 0.0f;

(more…)

Tagged with: ,

Strip 2: Penderitaan DotA Mania

Posted in cartoon strip by Adminnye on 19 November 2008

 

strip21

Ya beginilah nasib jadi penggemar DotA. Kebetulan gue lagi asik maen DotA bareng temen2 sekantor, gue kira udah gak ada orang. Waktu sudah menunjukkan pukul 5.46 di sore hari. Gak tahunya ada klien yang notabenenya adalah orang bule lewat pas dibelakang gue (posisi duduk gue emang paling tidak strategis). Saking paniknya gue tetep berlagak nyante di depan pc mainin DotA gara2 udah terlanjur keliatan monitornya. Sungguh memalukan….

Strip 1: Operator Monyet

Posted in cartoon strip by Adminnye on 19 November 2008

strip1

Kebetulan gue dapet postingan suara pembaca dari koran Sriwijaya Pos edisi 11 November 2008 dari email temen gue. Disitu tertulis komplain seorang pelanggan operator telepon selular, sebut saja operator YYY. Si penulis merasa tersinggung karena iklannya menggunakan monyet sebagai bintangnya dan menggantikan seorang artis cantik. Si penulis merasa disamakan dengan monyet sehingga dia dan seluruh keluarganya menyatakan sepakat untuk berhenti menggunakan operator selular YYY.
Wah ternyata iklan gak mesti menarik pelanggan, yang ini malah ngurangi pelanggan. Mungkin yang dipikirin manajemen, daripada pake artis mahal mending make monyet aja yang gak perlu dibayar, sekalian penghematan. Maklum sekarang eranya banting harga jadi harus serba irit.

Teori 1 : Mesh

Posted in Teori by Adminnye on 14 November 2008

Mesh merupakan koleksi dari vertek yang membentuk sebuah geometri (anggap saja model). Selain itu, mesh juga menyimpan koordinat dari mapping tekstur. Format dari mesh berekstensi X. Mesh tidak harus berbentuk file, anda juga bisa membuat mesh dengan cara langsung melakukan coding dalam aplikasi sehingga menjadi sebuah embedded mesh. Anda bisa melihat panduan secara lebih lengkap pada dokumentasi dari DirectX SDK. Mesh memiliki dua jenis:

  1. Mesh standar merupakan mesh yang hanya memiliki informasi mengenai vertek dan koordinat mapping teksturnya.
  2. Skinned mesh merupakan mesh yang tidak hanya memiliki informasi vertek dan koordinat mapping tekstur, tetapi juga memiliki informasi mengenai transformasi dari verteknya yang membentuk animasi dari vertek atau biasa disebut bone.

Untuk membuat sebuah mesh bisa menggunakan berbagai aplikasi grafik 3D desain, contohnya: 3DMax Studio, Blender, MilkShape. File yang dibuat dari aplikasi tersebut bisa diexport ke dalam file X, sayangnya untuk aplikasi 3DMax Studio dan Blender belum sepenuhnya support untuk mengexport skinned mesh. Namun MilkShape memiliki kemampuan untuk mengexport filenya menjadi skinned mesh dengan sempurna walau aplikasi ini sulit digunakan untuk melakukan desain tapi bisa menolong anda untuk membuat animasi dari mesh.
Anda juga bisa melakukan embed langsung dari file X yang telah dibuat dengan aplikasi desain grafis ke dalam aplikasi game sehingga game anda akan aman.
Contoh Mesh :
mesh1

Contoh Skinned mesh:
mesh2

Tutorial 5 : Loading Model

Posted in XNA by Adminnye on 14 November 2008

Model kalo dalam DirectX biasa disebut mesh. Perbedaan antara XNA dan DirectX adalah, jika XNA mampu melakukan load terhadap beberapa format file, sementara DirectX hanya mampu melakukan load terhada satu format yaitu file x. Langsung masuk ke tutorial, buat XNA project baru dengan mengikut XNA Tutorial 1 jika anda lupa. Tambahkan content berupa file X, buka solution explorer >> klik kanan Content >> add >> Existing Item. File X bisa ditemukan di folder C:\Program Files\Microsoft DirectX SDK\Samples\Media\Tiger (jika anda memiliki instalasi DirectX SDK, jika tidak ada anda bisa membuat sendiri, lihat pada artikel Teori 1), pilih file tiger.x dan tiger.bmp. Jika sudah tambahkan variable global :

private Model tigerModel;

Tambah juga kode pada fungsi LoadContent() untuk menginisiasi tigerModel.

tigerModel = Content.Load<Model>("tiger.x");

Buat fungsi untuk menggambar model, berikut kodenya:
(more…)

Tagged with: , , ,

DirectX Tutorial 4 : Transformasi World

Posted in DirectX by Adminnye on 13 November 2008

Tranformasi pada DirectX sama dengan transformasi pada XNA. Tranformasi bisa dilakukan terhadap space (world), objek (mesh), maupun kamera. Langkah-langkah melakukan transformasi world adalah sebagai berikut:
Buka kembali project file DirectX Tutorial 3, Inisiasikan varibel sudut perputaran dalam root class-nya, contoh:

private float sudutPutar = 0f;

Kemudian buka fungsi OnPaint() dan modifikasi kodenya menjadi berikut:

protected override void OnPaint(PaintEventArgs e)
{
device.Clear(ClearFlags.Target, Color.CornflowerBlue, 1.0f, 0);
device.BeginScene();
device.VertexFormat = CustomVertex.PositionColored.Format;
device.Transform.World = Matrix.RotationY(sudutPutar);
device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertexSegitiga);
device.EndScene();
device.Present();
this.Invalidate();
sudutPutar += 0.05f;
}

(more…)

XNA Tutorial 4 : Transformasi World

Posted in XNA by Adminnye on 12 November 2008

Kita akan mencoba untuk melakukan transformasi rotasi terhadap space (world) sehingga kita akan melihat segitiga berputar. Transformasi bisa dilakukan terhadap space (world), Objek (objek berupa mesh yang akan saya jelaskan pada tutorial berikutnya), terakhir adalah transformasi dari kamera. Buka kembali project file pada XNA Tutorial 3, kemudian buka file Game1.cs dan masuk pada fungsi Update(). Tambahkan kode berikut pada fungsi update:

worldMatrix *= Matrix.CreateRotationY(MathHelper.TwoPi / 360.0f);

Run aplikasi maka akan terlihat gambar segitiga yang dibuat berputar.

xna_tutorial4_transformasi1

xna_tutorial4_transformasi21

Tagged with: ,

XNA Tutorial 3 : Membuat Kamera

Posted in XNA by Adminnye on 11 November 2008

Bila DirectX SDK bisa membuat kamera dengan menginisiasi langsung pada kode program, XNA tidak demikian. Anda harus melakukan inisiasi variable dalam shader language (file effect) kemudian mengisi variable tersebut melalui kode program. Buka kembali project file pada XNA Tutorial 2. Untuk membuat kamera dengan menggunakan XNA, anda harus merubah dulu file effect pada XNA Tutorial 2 menjadi berikut:

uniform extern float4x4 WorldViewProj : WORLDVIEWPROJECTION;
 
struct VS_OUTPUT
{
 float4 position : POSITION;
 float4 color : COLOR0;
};
 
VS_OUTPUT Transform(
 float4 Pos : POSITION, 
 float4 Color : COLOR0 )
{
 VS_OUTPUT Out = (VS_OUTPUT)0;
 Out.position = mul(Pos, WorldViewProj);
 Out.color = Color;
 return Out;
}
 
float4 PixelShader( VS_OUTPUT vsout ) : COLOR
{
 return vsout.color;
}
 
technique TransformasiDasar
{
 pass P0
 {
  vertexShader = compile vs_1_1 Transform();
 pixelShader = compile ps_1_1 PixelShader();
 }
}

(more…)

Tagged with: ,

DirectX Tutorial 3 : Membuat Kamera

Posted in DirectX by Adminnye on 11 November 2008

Membuat kamera menggunakan DirectX lebih sederhana bila dibandingkan dengan menggunakan XNA, karena inisialisasi kamera bisa langsung dilakukan pada kode progam. Berbeda dengan XNA, dimana inisialisasi kamera harus dilakukan dengan menggunakan shader language yang dicode langsung pada file effect (*.fx) seperti pada XNA Tutorial 2. Buka berikut langkahnya, buka kembali DirectX Tutorial 2 kemudian ubah variable vertexSegitiga menjadi varibel global dengan cara menginisiasikannya di root class-nya.

private CustomVertex.PositionColored[] vertexSegitiga;

Kemudian buat fungsi untuk menginisiasikan vertek segitiga.

private void InitSegitiga()
{
vertexSegitiga = new CustomVertex.PositionColored[3];

vertexSegitiga[0].Position = new Vector3(-5.0f, 0.0f, 0.0f);
vertexSegitiga[0].Color = Color.Red.ToArgb();
vertexSegitiga[1].Position = new Vector3(0.0f, 10.0f, 0.0f);
vertexSegitiga[1].Color = Color.Blue.ToArgb();
vertexSegitiga[2].Position = new Vector3(5.0f, 0.0f, 0.0f);
vertexSegitiga[2].Color = Color.Yellow.ToArgb();
}

Buat fungsi untuk melakukan inisiasi kamera, berikut kodenya:
(more…)

Tagged with: , ,