Selasa, 30 Juni 2015

Animasi Game OpenTK 2D dengan Matematika Translasi



Suatu pagi sehabis weekend dan sehabis menyelesaikan proporsal untuk membuka tempat latihan baru...

Pagi rekan-rekan sekalian...salam sejahterah selalu...bagaimana keadaan agan-agan dan aganwati sekalian...luar biasa?...itu yang aku harapkan.


Artikel kali ini akan membahas tentang animasi untuk membuat game 2D dengan menggunakan matematika translasi. Setelah sebelumnya ogut memberi contoh animasi rotasi dengan memanfaatkan rumus rotasi pada sistem koordinat cartesius 2D. Maka kali ini ogut akan melengkapi artikel tersebut.

Pada bagian ini Anda akan diperkenalkan dengan translasi titik koordinat pada sistem koordinat cartesius 2D, dan di bagian akhir Anda akan belajar cara membuat animasi dengan menggunakan perhitungan translasi, hasil program dapat Anda lihat pada gambar di bawah ini.


Teori Translasi
Translasi adalah memindahkan sebuah titik koordinat ke posisi lain.


Pada gambar di atas terlihat sebuah titik koordinat A(x,y) yang dipindahkan sejauh dx dan arah perpindahannya sejajar dengan sumbu X.
Translasi dapat pula dilakukan sejajar dengan sumbu Y dan dapat juga merupakan kombinasi atau gabungan.

Translasi sejajar sumbu Y


Translasi kombinasi


Program yang ogut sertakan sebagai implementasi teori matematika untuk artikel ini adalah program yang mentranslasikan poligon persegipanjang sehingga menghasilkan suatu efek animasi 2D.


Bila program dijalankan akan terlihat objek pohon, awan, rumput dan bukit bergerak ke arah kanan yang memberi kesan seolah-olah pesawat bergerak ke arah kiri.


Berikut ini adalah kode program animasi dengan translasi.

Tentukan nilai awal titik koordinat poligon.

Private Sub SettingNilaiAwal()
    ...
    ...
    ...
    'pohon1
    Pohon1.Ax = -1250 : Pohon1.Ay = -510
    Pohon1.Bx = -750 : Pohon1.By = -510
    Pohon1.Cx = -750 : Pohon1.Cy = -5
    Pohon1.Dx = -1250 : Pohon1.Dy = -5
    ...
    ...
    ...
End Sub

Translasikan lalu display poligon.

Private Sub Render_Pohon1()
    'translasi koordinat poligon
    If Pohon1.Bx < GlControl1.Width + 1000 Then
        Pohon1.Ax = Pohon1.Ax + 20
        Pohon1.Bx = Pohon1.Bx + 20
        Pohon1.Cx = Pohon1.Cx + 20
        Pohon1.Dx = Pohon1.Dx + 20
    Else
        Pohon1.Ax = -1250
        Pohon1.Bx = -750
        Pohon1.Cx = -750
        Pohon1.Dx = -1250
    End If
    GL.Enable(EnableCap.Blend)
    GL.BlendFunc(BlendingFactorSrc.DstColor, BlendingFactorDest.Zero)
    'Mask
    GL.BindTexture(TextureTarget.Texture2D, Pohon1BMP_Mask)
    GL.Begin(BeginMode.Quads)
    GL.TexCoord2(0.0, 0.0) : GL.Vertex2(Pohon1.Ax, Pohon1.Ay)
    GL.TexCoord2(1.0, 0.0) : GL.Vertex2(Pohon1.Bx, Pohon1.By)
    GL.TexCoord2(1.0, 1.0) : GL.Vertex2(Pohon1.Cx, Pohon1.Cy)
    GL.TexCoord2(0.0, 1.0) : GL.Vertex2(Pohon1.Dx, Pohon1.Dy)
    GL.End()
    GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.One)
    'BMP
    GL.BindTexture(TextureTarget.Texture2D, Pohon1BMP)
    GL.Begin(BeginMode.Quads)
    GL.TexCoord2(0.0, 0.0) : GL.Vertex2(Pohon1.Ax, Pohon1.Ay)
    GL.TexCoord2(1.0, 0.0) : GL.Vertex2(Pohon1.Bx, Pohon1.By)
    GL.TexCoord2(1.0, 1.0) : GL.Vertex2(Pohon1.Cx, Pohon1.Cy)
    GL.TexCoord2(0.0, 1.0) : GL.Vertex2(Pohon1.Dx, Pohon1.Dy)
    GL.End()
    GL.Disable(EnableCap.Blend)
    If CheckBox2.Checked = True Then
        'warna merah untuk garis
        GL.BindTexture(TextureTarget.Texture2D, Red)
        GL.Begin(BeginMode.LineLoop)
        GL.Vertex2(Pohon1.Ax, Pohon1.Ay) 'titik kiri bawah
        GL.Vertex2(Pohon1.Bx, Pohon1.By) 'titik kanan bawah
        GL.Vertex2(Pohon1.Cx, Pohon1.Cy) 'titik kanan atas
        GL.Vertex2(Pohon1.Dx, Pohon1.Dy) 'titik kiri atas
        GL.End()
    End If
End Sub

Bagaimana rekan-rekan sekalian, mudah bukan? tapi amat sangat bermanfaat, terutama untuk rekan-rekan yang baru belajar membuat game. Tuntas sudah pembahasan tentang matematika translasi pada artikel kali ini, di lain kesempatan ogut akan membahas tentang matematika vektor 2D untuk pemrograman game 2D. Jika rekan-rekan sudah mencoba menerapkan vektor pada pemrograman game maka rekan-rekan sudah bisa membuat deteksi tabrakan. Jangan bosan ya untuk belajar karena semuanya pasti melalui proses, tidak mungkin langsung ngebut tancap gas bisa-bisa nabrak dong.

Satu lagi untuk rekan-rekan yang ingin menyumbangkan ide atau teori atau program, ogut akan menerima dengan senang hati, blog ini diperuntukkan juga bagi programmer lain jadi tidak hanya ogut melulu yang buat programnya, karena berbagi itu indah, ogut ingin agar muncul para pembuat game pro di tanah air, sebab para pemain game pro sudah banyak tetapi para pembuat game pro masih sedikit.

Update 2 Jan 2016

Contoh program game yang menggunakan vektor untuk menyelesaikan perhitungan matematikannya.





Salam Sukses


Heriady
heriady.yoh@gmail.com




Artikel terkait

VB . Net dan OpenTK 2D

Tekstur di OpenTK 2D

Teknik masking pada OpenTK 2D

Matematika rotasi untuk animasi OpenTK 2D

Tidak ada komentar:

Posting Komentar