JavaFX Camera এবং Lighting হল JavaFX গ্রাফিক্যাল ইউজার ইন্টারফেসে 3D গ্রাফিক্স তৈরি এবং উপস্থাপন করার জন্য ব্যবহৃত শক্তিশালী টুলস। 3D গ্রাফিক্সে সঠিক ক্যামেরা অ্যাঙ্গেল এবং আলো ব্যবহারের মাধ্যমে আপনি একটি জটিল দৃশ্য তৈরি করতে পারেন। JavaFX 3D সাপোর্ট দিয়ে আপনি বাস্তবসম্মত দৃশ্য এবং ভিজ্যুয়াল উপাদান তৈরি করতে পারেন।
JavaFX 3D Camera এবং Lighting
JavaFX-এর 3D গ্রাফিক্স ব্যবস্থাপনায় আপনি Camera এবং Lighting ব্যবহার করে 3D দৃশ্যগুলি তৈরি এবং সেগুলি আরও বাস্তবসম্মত এবং ইন্টারঅ্যাকটিভ করে তুলতে পারেন। এখানে Camera দৃশ্যের ভিউয়ের জন্য এবং Lighting দৃশ্যের আলোর জন্য ব্যবহৃত হয়।
1. Camera in JavaFX
Camera হল JavaFX-এর 3D দৃশ্যে দেখানোর জন্য ব্যবহৃত একটি অবজেক্ট। আপনি বিভিন্ন ধরনের ক্যামেরা ব্যবহার করতে পারেন, যেমন:
- PerspectiveCamera: এটি দৃশ্যকে 3D প্রক্ষেপণে (projection) দেখায়, যাতে দূরত্ব, গভীরতা এবং স্কেলিং বাস্তবসম্মতভাবে দেখা যায়।
- ParallelCamera: এটি 3D দৃশ্যকে একে অপরের সমান্তরালে দেখায় (orthogonal projection) এবং এটি 3D বস্তুগুলির মাপ পরিবর্তন করে না।
PerspectiveCamera উদাহরণ:
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Box;
import javafx.stage.Stage;
public class CameraExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি 3D বক্স তৈরি করা
Box box = new Box(100, 100, 100); // সাইজ (100, 100, 100)
box.setTranslateX(200);
box.setTranslateY(200);
box.setTranslateZ(0);
// PerspectiveCamera তৈরি করা
PerspectiveCamera camera = new PerspectiveCamera(true);
camera.setTranslateZ(-500); // ক্যামেরা পিছনে সরানো
camera.setTranslateY(-200); // ক্যামেরা কিছুটা নীচে রাখা
// 3D সীন তৈরি করা
Group root = new Group();
root.getChildren().add(box);
// Scene তৈরি করা
Scene scene = new Scene(root, 600, 400, true);
scene.setFill(Color.LIGHTGRAY); // ব্যাকগ্রাউন্ড রঙ
// ক্যামেরা সন্নিবেশ করা
scene.setCamera(camera);
// Stage সেট করা
primaryStage.setTitle("JavaFX Camera Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
এখানে কী হচ্ছে?
- PerspectiveCamera: ক্যামেরা
trueহিসাবে ইনিশিয়ালাইজ করা হয়েছে, যার ফলে এটি পারস্পেকটিভ ভিউ প্রদান করবে, এবং 3D বক্সটি ক্যামেরার সামনে এবং পিছনে দৃশ্যমান হবে। - Box: একটি 3D বক্স তৈরি করা হয়েছে এবং ক্যামেরার জন্য দৃশ্যমান করা হয়েছে।
2. Lighting in JavaFX
JavaFX এ Lighting দৃশ্যের আলো কাস্টমাইজ করতে ব্যবহৃত হয়। JavaFX মূলত তিন ধরনের আলো প্রদান করে:
- AmbientLight: এই আলো দৃশ্যে প্রতিটি উপাদানকে সমানভাবে আলো প্রদান করে, অর্থাৎ, এটি কোনও নির্দিষ্ট স্থান থেকে আসা আলো নয়, বরং একটি সাধারণ পরিবেশ আলো।
- PointLight: এটি একটি পয়েন্ট থেকে নির্গত আলো যা একটি নির্দিষ্ট জায়গা থেকে প্রতিটি জায়গায় আলো ছড়িয়ে দেয়। এই আলো 3D অবজেক্টের উপর কার্যকরী হতে পারে, এবং এই আলোতে
falloffবা ঘনত্বও থাকতে পারে। - DirectionalLight: এটি একটি নির্দিষ্ট দিক থেকে আসা আলো যা সমান্তরাল রশ্মি তৈরি করে।
Lighting Example (PointLight, DirectionalLight, and AmbientLight):
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Sphere;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
public class LightingExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি 3D ব Sphere তৈরি করা
Sphere sphere = new Sphere(150);
sphere.setTranslateX(300);
sphere.setTranslateY(200);
sphere.setTranslateZ(0);
// PointLight যোগ করা
PointLight pointLight = new PointLight(Color.RED);
pointLight.setTranslateX(500);
pointLight.setTranslateY(200);
pointLight.setTranslateZ(-100);
// DirectionalLight যোগ করা
DirectionalLight directionalLight = new DirectionalLight(Color.BLUE);
directionalLight.setTranslateX(300);
directionalLight.setTranslateY(-300);
directionalLight.setTranslateZ(-500);
// AmbientLight যোগ করা
AmbientLight ambientLight = new AmbientLight(Color.WHITE);
// 3D সীন তৈরি করা
Group root = new Group();
root.getChildren().addAll(sphere, pointLight, directionalLight, ambientLight);
// Scene তৈরি করা
Scene scene = new Scene(root, 600, 400, true);
scene.setFill(Color.LIGHTGRAY); // ব্যাকগ্রাউন্ড রঙ
// ক্যামেরা সন্নিবেশ করা
PerspectiveCamera camera = new PerspectiveCamera(true);
scene.setCamera(camera);
// Stage সেট করা
primaryStage.setTitle("JavaFX Lighting Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
এখানে কী হচ্ছে?
- PointLight: একটি রেড আলো যা একটি নির্দিষ্ট স্থান থেকে ছড়ানো হচ্ছে।
- DirectionalLight: একটি ব্লু আলো যা সমান্তরালভাবে 3D সীনকে আলোকিত করছে।
- AmbientLight: একটি সাদা আলো যা পুরো দৃশ্যকে সমানভাবে আলোকিত করছে।
Lighting Types:
- AmbientLight: সমস্ত জিনিসের উপর একরকম আলো প্রদান করে, যাতে কোনো সঠিক দিক বা অবস্থান থাকে না।
- PointLight: একটি নির্দিষ্ট পয়েন্ট থেকে আলো আসে এবং এটি সব দিকে ছড়িয়ে পড়ে।
- DirectionalLight: একটি নির্দিষ্ট দিক থেকে আলো আসছে যা সমান্তরাল রশ্মি তৈরি করে।
3. Combining Camera and Lighting
JavaFX-এ ক্যামেরা এবং আলোর একত্রে ব্যবহার করে আপনি একটি পূর্ণাঙ্গ 3D দৃশ্য তৈরি করতে পারেন। আপনি ক্যামেরার অবস্থান এবং আলোর উৎস অনুযায়ী দৃশ্যের দৃষ্টিভঙ্গি এবং আলো কাস্টমাইজ করতে পারেন।
Combing Camera and Lighting Example:
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Cylinder;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
public class CameraAndLightingExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি সিলিন্ডার তৈরি করা
Cylinder cylinder = new Cylinder(50, 200);
cylinder.setTranslateX(250);
cylinder.setTranslateY(200);
cylinder.setTranslateZ(0);
// PointLight তৈরি করা
PointLight pointLight = new PointLight(Color.GREEN);
pointLight.setTranslateX(300);
pointLight.setTranslateY(100);
pointLight.setTranslateZ(-100);
// DirectionalLight তৈরি করা
DirectionalLight directionalLight = new DirectionalLight(Color.YELLOW);
directionalLight.setTranslateX(-200);
directionalLight.setTranslateY(-200);
directionalLight.setTranslateZ(-300);
// 3D সীন তৈরি করা
Group root = new Group();
root.getChildren().addAll(cylinder, pointLight, directionalLight);
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(root, 600, 400, true);
scene.setFill(Color.LIGHTBLUE); // ব্যাকগ্রাউন্ড রঙ
// PerspectiveCamera তৈরি করা
PerspectiveCamera camera = new PerspectiveCamera(true);
camera.setTranslateZ(-500); // ক্যামেরাকে পিছনে নিয়ে যাওয়া
scene.setCamera(camera);
// Stage সেট করা
primaryStage.setTitle("JavaFX Camera and Lighting Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
এখানে কী হচ্ছে?
- Cylinder: একটি 3D সিলিন্ডার তৈরি করা হয়েছে এবং ক্যামেরার সামনে স্থাপন করা হয়েছে।
- PointLight এবং DirectionalLight: 3D সিলিন্ডারটির উপর আলো প্রয়োগ করা হয়েছে, যেখানে একটি পয়েন্ট আলো এবং একটি দিকনির্দেশক আলো দেওয়া হয়েছে।
সারাংশ:
- Camera এবং Lighting JavaFX 3D গ্রাফিক্সের দুটি অত্যন্ত গুরুত্বপূর্ণ উপাদান। Camera ব্যবহার করে দৃশ্যের ভিউ এবং প্রেক্ষাপট নিয়ন্ত্রণ করা যায়, এবং Lighting ব্যবহার করে দৃশ্যে আলোর অবস্থান, ধরণ এবং প্রভাব নিয়ন্ত্রণ করা যায়।
- Lighting আপনাকে আপনার 3D গ্রাফিক্সকে আরও বাস্তবসম্মত এবং দৃশ্যমান করতে সহায়তা করে, এবং Camera ব্যবহার করে আপনি দৃশ্যের বিভিন্ন দিক বা কোণ থেকে দেখতে পারেন।
Read more