প্রশিক্ষণ- পর্ব
আকার রূপান্তর এবং মাল্টি-মেক্টাল অ্যানিমেশন তৈরি করুন।.
TE: ২০ মিনিট ** কঠিন: উন্নত
আপনি কি তৈরি করবেন
একটা গতিশীল প্রক্রিয়া যেখানে একে অপরের মধ্যে রূপান্তরিত হয়, অন্যদিকে ট্যাগিং টাইমের মাধ্যমে তা প্রকাশ পায় ।.
অদৃশ্য বৈশিষ্ট্য
- **Phophinus - বিভিন্ন আকারের মধ্যে মসৃণ রুপান্তর
- **Shorkers - একাধিক বস্তুর জন্য ক্রমপর্যায়করণ সময়
- **Colors - রঙের তারতম্যসহ স্বয়ংক্রিয়ভাবে রং পরিবর্তন করা হবে
- Mak — সিনেমায় শুদ্ধি অভিযান এবং ক্ষতিকর প্রভাব
- **Cobrod অনুক্রমকারী ক্রমবিবর্তনের মাধ্যমে — একেবারে নির্দিষ্ট সময়ভিত্তিক-প্রসেসিং ড্যান্স
প্রথম ভাগ: মরফিং
ধাপ ১:
- কেন্দ্রে একটি বৃত্ত তৈরি করো:
- ব্যাসার্ধ
- রং:
#3b82f6(নীল) - Position: (400, 300)
const circle = app.create('circle', {
x: 400, y: 300,
radius: 80,
color: '#3b82f6'
});
দ্বিতীয় ক্ষেত্র:
- একটি তারার নাম তৈরি করুন (প্রথমটি রূপান্তর করা হবে):
- বিন্দু: 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) — উন্নত প্রযুক্তি প্রকাশ করে