...::Selamat datang pemirsa BLOGGER semoga apa yang dicantumkan berguna bagi yang membutuhkaN::...

Rabu, 24 Maret 2010

SHADING, LIGHTING, AND TEXTURING

::...Dasar Teori...::
Shading, lighting, dan texturing merupakan metode atau teknik dalam rendering (pembentukan gambar yang mengandung model geometris untuk menghasilkan gambar yang lebih realistis). Pemberian bayangan (shading) merupakan proses penentuan warna dari semua pixel yang menutupi permukaan menggunakan model illuminasi (pencahayaan). Pencahayaan (lighting) adalah suatu metode yang dapat kita terapkan pada proses rendering untuk menjadikan sebuah objek menjadi terlihat berbeda dan realistis. Sementara itu, texturing merupakan proses mewarnai, memberi tekstur, atau memberi efek material pada sebuah model 3D. Bagian ini secara garis besar akan menguraikan sejumlah operasi terkait dengan ketiga teknik di atas secara ringkas dan implementatif. Pembahasan lebih rinci mengenai teknik terkait bisa dilihat pada dokumentasi Java3D.
::...Dasar Teori...::
Dalam membuat suatu gambar menggunakan shading, lighting, dan texturing lumayan sedikit ribet sih bagi yang belajar dasar, tapi tenang aja disini aku beri contoh dalam aplikasi shading, lighting, texture agar pembaca lebih mengerti tentang materi grafika komputer dalam edisi JAVA.
------------------------selamat mencoba-------------------------
ini dia javascript sebagai contoh pemahaman kegunaan dari teori diatas, program java ini berfungsi membuat dan mampu memberikan tekstur pada objek bola (sphere) dengan mengambil gambar peta dunia sehingga menghasilkan representasi globe. ditambahkan juga fitur untuk memutar objek sehingga lebih atraktif dan interaktif.
.........awal script..........
import java.awt.*;
import javax.swing.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.behaviors.mouse.*;
import com.sun.j3d.utils.image.TextureLoader;


/*
* ------------------------------------------
*@uthor agus nuryanto
*@mail:agus.nue48@gmail.com
*program demoglobe ilmu grafika komputer
* ------------------------------------------
*/

public class TroubleGlobe extends JFrame {
public TroubleGlobe(String sFile) {
    super("Demo Globe");
    Canvas3D canvas3D = createCanvas3D();
    BranchGroup scene = createSceneGraph(sFile);
    connect(canvas3D, scene);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    }
   
// Menciptakan kanvas 3D
private Canvas3D createCanvas3D() {
    GraphicsConfiguration config =
    SimpleUniverse.getPreferredConfiguration();
    Canvas3D canvas3D = new Canvas3D(config);
    setSize(400, 400);
    getContentPane().add(canvas3D);
    return canvas3D;
    }
   

// Menciptakan transformasi group
private BranchGroup createSceneGraph(String sFile) {
    Transform3D transform = new Transform3D();
    transform.set(new Vector3d(0.0, 0.0, -50.0));
    TransformGroup tg = new TransformGroup(transform);
    TransformGroup rg = new TransformGroup();
    tg.addChild(rg);
    rg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    TextureLoader loader = new TextureLoader(sFile, this);
    Texture texture = loader.getTexture();
    Appearance ap = new Appearance();
    ap.setTexture(texture);

// Menciptakan bola dg tekstur (LENGKAPI)
    Sphere textureSphere = new Sphere(12.0f,
    Sphere.GENERATE_TEXTURE_COORDS, 100, ap);
    rg.addChild(textureSphere);
    BranchGroup group = new BranchGroup();
    BoundingSphere bounds = new BoundingSphere();

// Menciptakan rotate
    Alpha alpha = new Alpha(-1,15000);
    RotationInterpolator rotator = new RotationInterpolator(alpha,rg);
    rotator.setSchedulingBounds(bounds);
    rg.addChild(rotator);

// Mendefinisikan pencahayaan directional
    Color3f lCol = new Color3f(Color.white);
    Vector3f lDir = new Vector3f(4.0f, -7.0f, -12.0f);
    DirectionalLight light = new DirectionalLight(lCol,lDir);
    light.setInfluencingBounds(bounds);
    group.addChild(light);
    group.addChild(tg);
    group.compile();
    return group;

    }

// Mengaitkan kanvas dan branch group
private void connect(Canvas3D canvas3D, BranchGroup scene){
    SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
    simpleU.getViewingPlatform().
    setNominalViewingTransform();
    simpleU.addBranchGraph(scene);
    }

public static void main(String[] args) {
// Me-load gambar untuk tekstur
    new TroubleGlobe("earth.jpg");           //masukkan gambar bebas dalam 1 folder [file.jpg]
    }
}
.............akhir script.................
langkah selanjutnya, copy paste program tersebut di notepad.exe atau yang lainnya dan save dengan nama TroubleGlobe.java
cara menjalankannya pun mudah, buka command prompt dan ketikkan javac TroubleGlobe.java
                                                                                                            java   TroubleGlobe
run alias tekan enter [pesan: buka dalam 1 folder or directory]

Tidak ada komentar:

Gabung yuk!...