প্রশিক্ষণ- পর্ব

আকার রূপান্তর এবং মাল্টি-মেক্টাল অ্যানিমেশন তৈরি করুন।.

TE: ২০ মিনিট ** কঠিন: উন্নত

আপনি কি তৈরি করবেন

একটা গতিশীল প্রক্রিয়া যেখানে একে অপরের মধ্যে রূপান্তরিত হয়, অন্যদিকে ট্যাগিং টাইমের মাধ্যমে তা প্রকাশ পায় ।.

QSapstep Sage দ্বারা Scround টেক্সট প্রকাশ করা হয়

অদৃশ্য বৈশিষ্ট্য

  • **Phophinus - বিভিন্ন আকারের মধ্যে মসৃণ রুপান্তর
  • **Shorkers - একাধিক বস্তুর জন্য ক্রমপর্যায়করণ সময়
  • **Colors - রঙের তারতম্যসহ স্বয়ংক্রিয়ভাবে রং পরিবর্তন করা হবে
  • Mak — সিনেমায় শুদ্ধি অভিযান এবং ক্ষতিকর প্রভাব
  • **Cobrod অনুক্রমকারী ক্রমবিবর্তনের মাধ্যমে — একেবারে নির্দিষ্ট সময়ভিত্তিক-প্রসেসিং ড্যান্স

প্রথম ভাগ: মরফিং

ধাপ ১:

  1. কেন্দ্রে একটি বৃত্ত তৈরি করো:
    • ব্যাসার্ধ
    • রং: #3b82f6 (নীল)
    • Position: (400, 300)
const circle = app.create('circle', {
  x: 400, y: 300,
  radius: 80,
  color: '#3b82f6'
});

দ্বিতীয় ক্ষেত্র:

  1. একটি তারার নাম তৈরি করুন (প্রথমটি রূপান্তর করা হবে):
    • বিন্দু: 5
    • ব্যাসার্ধ
    • রং: #f59e0bQ (ম্বা)
    • Position: (400, 300)
const star = app.create('star', {
  x: 400, y: 300,
  points: 5,
  radius1: 100,
  radius2: 40,
  color: '#f59e0b'
});

ধাপ:

morphs_to- এর সম্পর্ক মসৃণ আকার পরিবর্তন করে:

app.addRelation(circle.data.id, star.data.id, 'morphs_to', {
  duration: 1.5,
  easing: 'easeInOut',
  morphColor: true,   // Also transition colors
  morphSize: true     // Also transition size
});

ধাপ ৪: চাইন একাধিক মর্ফ

একটি রূপান্তর প্রক্রিয়া তৈরি করুন: বৃত্ত তারা যেন একটি বৃত্ত তৈরি করুন প্রেরিত হল:

const shapes = [];

// Circle
shapes.push(app.create('circle', {
  x: 400, y: 300, radius: 80, color: '#3b82f6'
}));

// Star
shapes.push(app.create('star', {
  x: 400, y: 300, points: 5, radius1: 100, radius2: 40,
  color: '#f59e0b', opacity: 0
}));

// Triangle
shapes.push(app.create('triangle', {
  x: 400, y: 300, radius: 90,
  color: '#10b981', opacity: 0
}));

// Hexagon (back to geometric)
shapes.push(app.create('polygon', {
  x: 400, y: 300, sides: 6, radius: 85,
  color: '#8b5cf6', opacity: 0
}));

// Chain morphs with delays
for (let i = 0; i < shapes.length - 1; i++) {
  app.addRelation(shapes[i].data.id, shapes[i + 1].data.id, 'morphs_to', {
    duration: 1.2,
    delay: i * 1.5,  // Stagger start times
    easing: 'easeInOut',
    morphColor: true
  });
}

// Loop back to first shape
app.addRelation(shapes[shapes.length - 1].data.id, shapes[0].data.id, 'morphs_to', {
  duration: 1.2,
  delay: (shapes.length - 1) * 1.5,
  easing: 'easeInOut',
  morphColor: true
});

দ্বিতীয় ভাগ:

ধাপ ৫:

const collage = app.letterCollage.create('TRANSFORM', {
  style: 'gradient',
  gradientPalette: 'cyberpunk',
  gradientDirection: 'horizontal',
  fontSize: 64,
  x: 400, y: 500
});

পদক্ষেপ ৬: Editily অ্যানিমেশন প্রয়োগ করুন

app.letterCollage.applyStaggeredAnimation(collage.collageId, {
  effect: 'fadeSlideUp',
  staggerDelay: 0.06,    // 60ms between letters
  duration: 0.5,
  sequence: 'center',     // Start from center, expand outward
  easing: 'easeOut'
});

ক্রমপর্যায়

প্যাটার্ন ইফেক্ট
linear বাঁদিক থেকে ডানদিকে
reverse ডানদিক থেকে বাঁদিক
center প্রান্ত
random এলোমেলো ক্রম
wave সাইনের সময় সন্নিবেশ করা হবে
fibonacci স্বাভাবিক শব্দ

তৃতীয় ভাগ: মাস্ক প্রকাশ

ধাপ ৭: উন্মোচন

আইরিসের প্রভাবের আকার প্রকাশ করে:

// Apply animated mask to the shape container
app.applyAnimatedMask(shapes[0], 'iris', {
  startTime: 0,
  duration: 0.8,
  easing: 'easeOut'
});

ধাপ ৮:

// Reveal text with horizontal wipe
app.applyAnimatedMask(collage.group, 'wipeLeft', {
  startTime: 0.5,  // Start after shape reveals
  duration: 0.6,
  easing: 'easeInOut'
});

উপলব্ধ মাস্ক প্রি-সেট

পূর্বনির্ধারিত ইফেক্ট
iris কেন্দ্র থেকে বৃত্ত বৃদ্ধি
wipeLeft অজানা থেকে সরিয়ে ফেলা
wipeUp উলম্ব ফাঁকাস্থান থেকে নীচে
star তারার আকৃতি প্রসারিত
heart হৃদয়ের আকৃতি প্রসারিত
curtainHorizontal কেন্দ্র থেকে খোলা
diagonalWipe কোণ উন্মোচন

পর্ব ৪: চেরীত্ব সম্পূর্ণ করুন

সম্পূর্ণ অ্যানিমেশন স্ক্রিপ্ট

// === SETUP ===
app.setCanvasSize({ width: 800, height: 600 });
app.setBackgroundColor('#0f172a');

// === MORPHING SHAPES ===
const shapeColors = ['#3b82f6', '#f59e0b', '#10b981', '#8b5cf6'];
const shapeTypes = ['circle', 'star', 'triangle', 'polygon'];

const mainShape = app.create('circle', {
  x: 400, y: 250,
  radius: 80,
  color: shapeColors[0]
});

// Keyframe the shape through color transitions
app.addAnimation(mainShape.data.id, [
  { time: 0, properties: { fillColor: '#3b82f6', scale: 1 } },
  { time: 1.5, properties: { fillColor: '#f59e0b', scale: 1.2 }, easing: 'easeInOut' },
  { time: 3, properties: { fillColor: '#10b981', scale: 0.9 }, easing: 'easeInOut' },
  { time: 4.5, properties: { fillColor: '#8b5cf6', scale: 1.1 }, easing: 'easeInOut' },
  { time: 6, properties: { fillColor: '#3b82f6', scale: 1 }, easing: 'easeInOut' }
]);

// Add rotation for visual interest
app.addAnimation(mainShape.data.id, [
  { time: 0, properties: { rotation: 0 } },
  { time: 6, properties: { rotation: 360 }, easing: 'linear' }
]);

// === IRIS REVEAL FOR SHAPE ===
app.applyAnimatedMask(mainShape, 'iris', {
  startTime: 0,
  duration: 0.6,
  easing: 'easeOut'
});

// === STAGGERED TEXT ===
const title = app.letterCollage.create('TRANSFORM', {
  style: 'tile',
  palette: 'neon',
  fontSize: 56,
  x: 400, y: 480
});

app.letterCollage.applyStaggeredAnimation(title.collageId, {
  effect: 'popIn',
  staggerDelay: 0.05,
  duration: 0.4,
  sequence: 'center',
  easing: 'elastic'
});

// === ORBITING ACCENTS ===
const orbitColors = ['#f472b6', '#34d399', '#fbbf24'];
orbitColors.forEach((color, i) => {
  const dot = app.create('circle', {
    x: 400, y: 250,
    radius: 6,
    color: color
  });

  app.addRelation(dot.data.id, mainShape.data.id, 'orbits', {
    radius: 120 + i * 25,
    speed: 0.4 - i * 0.1,
    phase: i * (Math.PI * 2 / 3)
  });

  // Fade in the orbiting dots
  app.addAnimation(dot.data.id, [
    { time: 0.8 + i * 0.2, properties: { opacity: 0, scale: 0 } },
    { time: 1.2 + i * 0.2, properties: { opacity: 1, scale: 1 }, easing: 'elastic' }
  ]);
});

// === CAMERA MOVEMENT ===
app.addRelation('camera', null, 'camera_animates', {
  duration: 6,
  loop: true,
  keyframes: [
    { time: 0, zoom: 1, center: [400, 300] },
    { time: 1.5, zoom: 1.15, center: [400, 280], easing: 'easeOut' },
    { time: 3, zoom: 1.05, center: [400, 320], easing: 'easeInOut' },
    { time: 4.5, zoom: 1.1, center: [400, 300], easing: 'easeInOut' },
    { time: 6, zoom: 1, center: [400, 300], easing: 'easeOut' }
  ]
});

// === PLAY ===
app.playKeyframeTimeline(6, true);

পুনরুদ্ধার সংক্রান্ত বৈশিষ্ট্য

অ্যানিমেশনের সেরা ফলাফলের জন্য:

মানসমূহ মান কারণ
বিন্যাস WebM % 1 বছর
ফ্রেমের হার 60 fps মসৃণকরণ
অবকাল ৬ সেকেন্ড সম্পূর্ণ চক্র চক্র
গুণমান উচ্চ অপরিবর্তিত রং পরিবর্তন করা হবে

টিপস

**LOCTELY-এর সময় গণনা শুরু করা হয় — পরবর্তী অ্যানিমেশন 0.1-১.

শূণ্য রঙ ব্যবহার করুন - রং পরিবর্তনের সঙ্গে সঙ্গে বিভিন্ন রঙের পরিবর্তনকে উন্নত করে ।.

foQQQugarters এর প্রভাবের জন্য **Phole বিন্যাস টেক্সটের কেন্দ্রবিন্দুতে মনোযোগ আকর্ষণ করে ।.

**cHite-এর মধ্যে টেক্সট লেখার জন্য XQQQQQQQ ব্যবহার করা হয় ।.


পরিবর্তন নির্বাচনকারী

ডাটা ভিশুয়ালাইজেশন মরফি

// Bar chart to pie chart transition
const bars = createBarChart(data);
const pie = createPieChart(data);

app.addRelation(bars.data.id, pie.data.id, 'morphs_to', {
  duration: 2,
  easing: 'easeInOut'
});

লোগো অ্যানিমেশন ক্রমপর্যায়

// Logo parts appear in sequence
const logoParts = [shape1, shape2, shape3, text];

logoParts.forEach((part, i) => {
  app.addAnimation(part.data.id, [
    { time: i * 0.3, properties: { opacity: 0, scale: 0.5 } },
    { time: i * 0.3 + 0.4, properties: { opacity: 1, scale: 1 }, easing: 'elastic' }
  ]);
});

পরবর্তী ধাপ

  • [হসিক্স অ্যানিমেশন] (XQoQ) — বাউন্স এবং রুমিমস্তকি
  • [ মানচিত্র অ্যানিমেশন]
  • [মিউজিং সিস্টেম] (/features/maskingQ) — উন্নত প্রযুক্তি প্রকাশ করে