উদাহরণ সহ 3D মডেল তৈরি

3D গ্রাফিক্স এবং মডেলিং - জোগল (JOGL) - Java Technologies

324

JOGL (Java OpenGL) ব্যবহার করে 3D মডেল তৈরি করা একটি শক্তিশালী পদ্ধতি, যেখানে আপনি OpenGL এর ক্ষমতা ব্যবহার করে 3D গ্রাফিক্স এবং মডেলিং তৈরি করতে পারেন। এখানে, JOGL ব্যবহার করে 3D Cube তৈরি করার একটি উদাহরণ দেওয়া হবে।

3D মডেল তৈরি করতে নিম্নলিখিত বিষয়গুলির উপর ফোকাস করতে হবে:

  1. OpenGL Context তৈরি করা।
  2. 3D Geometries (যেমন Cube, Sphere) তৈরি করা।
  3. Camera এবং Lighting কনফিগার করা।
  4. Transformations (যেমন Rotate, Scale, Translate) প্রয়োগ করা।

3D Cube তৈরি করার উদাহরণ

এখানে, আমরা একটি 3D Cube তৈরি করব, যা রোটেট হবে এবং এর মধ্যে lighting এবং color অ্যাপ্লাই করা হবে।

প্রকল্প সেটআপ

প্রথমে, JOGL লাইব্রেরি আপনার প্রকল্পে যুক্ত করুন। যদি আপনি Maven ব্যবহার করেন, তাহলে pom.xml এ এই ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>jogl-all</artifactId>
    <version>2.4.0</version>
</dependency>

3D Cube উদাহরণ কোড

import com.jogamp.opengl.*;
import com.jogamp.opengl.awt.GLCanvas;
import com.jogamp.opengl.glu.GLU;
import javax.swing.*;

public class Cube3DExample implements GLEventListener {

    private float angle = 0.0f; // Rotation angle for the cube

    public static void main(String[] args) {
        // Create OpenGL profile
        GLProfile glp = GLProfile.get(GLProfile.GL2);  // OpenGL 2.x
        com.jogamp.opengl.GLCapabilities caps = new com.jogamp.opengl.GLCapabilities(glp);
        
        // Create GLCanvas with capabilities
        GLCanvas canvas = new GLCanvas(caps);

        // Set event listener for the canvas
        Cube3DExample listener = new Cube3DExample();
        canvas.addGLEventListener(listener);

        // Set up the JFrame window
        JFrame frame = new JFrame("JOGL 3D Cube Example");
        frame.setSize(800, 600);
        frame.getContentPane().add(canvas);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    @Override
    public void init(GLAutoDrawable drawable) {
        GL2 gl = drawable.getGL().getGL2();
        GLU glu = new GLU();

        // Set clear color (background color) to black
        gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

        // Set up the camera (Perspective view)
        gl.glMatrixMode(GL2.GL_PROJECTION);
        gl.glLoadIdentity();
        glu.gluPerspective(45.0f, 1.0f, 0.1f, 100.0f);  // Field of view, aspect ratio, near/far plane
        gl.glTranslatef(0.0f, 0.0f, -5.0f);  // Move the object away from the camera

        // Enable lighting
        gl.glEnable(GL2.GL_LIGHTING);
        gl.glEnable(GL2.GL_LIGHT0);  // Default light source
    }

    @Override
    public void display(GLAutoDrawable drawable) {
        GL2 gl = drawable.getGL().getGL2();

        // Clear the screen and depth buffer
        gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);

        // Set the modelview matrix (for transformations)
        gl.glMatrixMode(GL2.GL_MODELVIEW);
        gl.glLoadIdentity();

        // Rotate the cube
        gl.glRotatef(angle, 1.0f, 1.0f, 0.0f); // Rotate around the x and y axis

        // Draw the cube
        gl.glBegin(GL2.GL_QUADS); // Draw the cube with quadrilateral faces

        // Front face (z = 1)
        gl.glColor3f(1.0f, 0.0f, 0.0f);  // Red color
        gl.glVertex3f(-1.0f, -1.0f, 1.0f);
        gl.glVertex3f( 1.0f, -1.0f, 1.0f);
        gl.glVertex3f( 1.0f,  1.0f, 1.0f);
        gl.glVertex3f(-1.0f,  1.0f, 1.0f);

        // Back face (z = -1)
        gl.glColor3f(0.0f, 1.0f, 0.0f);  // Green color
        gl.glVertex3f(-1.0f, -1.0f, -1.0f);
        gl.glVertex3f(-1.0f,  1.0f, -1.0f);
        gl.glVertex3f( 1.0f,  1.0f, -1.0f);
        gl.glVertex3f( 1.0f, -1.0f, -1.0f);

        // Right face (x = 1)
        gl.glColor3f(0.0f, 0.0f, 1.0f);  // Blue color
        gl.glVertex3f( 1.0f, -1.0f, -1.0f);
        gl.glVertex3f( 1.0f, -1.0f,  1.0f);
        gl.glVertex3f( 1.0f,  1.0f,  1.0f);
        gl.glVertex3f( 1.0f,  1.0f, -1.0f);

        // Left face (x = -1)
        gl.glColor3f(1.0f, 1.0f, 0.0f);  // Yellow color
        gl.glVertex3f(-1.0f, -1.0f, -1.0f);
        gl.glVertex3f(-1.0f,  1.0f, -1.0f);
        gl.glVertex3f(-1.0f,  1.0f,  1.0f);
        gl.glVertex3f(-1.0f, -1.0f,  1.0f);

        // Top face (y = 1)
        gl.glColor3f(1.0f, 0.0f, 1.0f);  // Magenta color
        gl.glVertex3f(-1.0f, 1.0f, -1.0f);
        gl.glVertex3f(-1.0f, 1.0f,  1.0f);
        gl.glVertex3f( 1.0f, 1.0f,  1.0f);
        gl.glVertex3f( 1.0f, 1.0f, -1.0f);

        // Bottom face (y = -1)
        gl.glColor3f(0.0f, 1.0f, 1.0f);  // Cyan color
        gl.glVertex3f(-1.0f, -1.0f, -1.0f);
        gl.glVertex3f( 1.0f, -1.0f, -1.0f);
        gl.glVertex3f( 1.0f, -1.0f,  1.0f);
        gl.glVertex3f(-1.0f, -1.0f,  1.0f);

        gl.glEnd(); // End drawing

        // Increment rotation angle for next frame
        angle += 0.5f;
    }

    @Override
    public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
        GL2 gl = drawable.getGL().getGL2();
        gl.glViewport(0, 0, width, height);  // Adjust the viewport to the canvas size
    }
}

কোড বিশ্লেষণ

  1. GLProfile এবং GLCapabilities: OpenGL এর প্রোফাইল এবং ক্যাপাবিলিটিস সেটআপ করা হয় যাতে OpenGL সংস্করণ এবং রেন্ডারিং সক্ষমতা কনফিগার করা যায়।
  2. GLCanvas: OpenGL ক্যানভাস তৈরি করা হয়, যা আমাদের গ্রাফিক্স উইন্ডো হিসাবে কাজ করবে।
  3. GLEventListener: রেন্ডারিং ও ইভেন্ট ম্যানেজমেন্টের জন্য GLEventListener ইন্টারফেস ব্যবহার করা হয়েছে। এখানে, display() মেথডে 3D কিউব আঁকা হচ্ছে।
  4. Lighting: এখানে শুধুমাত্র ডিফল্ট লাইট (GL_LIGHT0) সক্রিয় করা হয়েছে, তবে আরও উন্নত lighting কনফিগারেশন যোগ করা সম্ভব।
  5. Rotation: কিউবের জন্য রোটেশন অ্যাপ্লাই করা হয়েছে, যা প্রতি ফ্রেমে কিউবটিকে ঘুরিয়ে দেয়।

সারাংশ


JOGL (Java OpenGL) ব্যবহার করে আপনি খুব সহজেই 3D গ্রাফিক্স এবং 3D মডেল তৈরি করতে পারেন। 3D Cube এর উদাহরণের মাধ্যমে, JOGL তে 3D রেন্ডারিং এর প্রাথমিক ধারণা এবং সেটআপ দেখানো হয়েছে। আপনি এর মাধ্যমে camera positioning, lighting, এবং rotation transformations এর মতো অন্যান্য ফিচারও অ্যাড করতে পারেন।

এটি একটি সহজ প্রাথমিক উদাহরণ, যা ভবিষ্যতে আরও জটিল 3D models, animations, এবং interactive scenes তৈরি করার জন্য ভিত্তি প্রদান করবে। JOGL এর মাধ্যমে আপনি উন্নত 3D গ্রাফিক্স অ্যাপ্লিকেশন তৈরি করতে সক্ষম হবেন।

Content added By
Promotion

Are you sure to start over?

Loading...