GEM library :
GEM یک کتابخانه ای از تصاویر و ویدئوها و اشیا ۳ بعدی مبتنی بر OpenGL است .
GEM میتواند در ان واحد (ریل تایم) در تصاویر،ویدئوها،متن ها،مدل های۳ بعدی واشیا دست کاری کند یا آنها را ترکیب کند یا بین آنها ارتباط برقرار کند و کم وبیش این کار را همانند روش پردازش Audio وMIDI انجام می دهد.
GEM library در نسخه Pd extended وجود دارد و نیاز به دانلود این کتابخانه به صورت جداگانه نیست.
میتوانید مطالب زیادی را از طریق آدرس زیر داخل برنامه puredata بیابید :
Gemwin :
برای ایجاد و کنترل کردن پنجره گرافیکی تنها راه استفاده کردن از Gemwin است.
در اینجا لیستی از پیام هایی که gemwin شامل میشود را میاوریم :
(برای تنظیم کردن پنجره گرافیکی قبل از ایجاد ان)
create
-ازاین دستور برای ایجاد بستری ( پنجره گرافیکی ) جهت رندر کردن یک محتوای OpenGL استفاده میشود.
destroy
-پنجره گرافیکی و محتوای OpenGL ان را میبندد.
" ۱ "-رندرینگ را شروع می کند.
" ۰ " -رندرینگ را متوقف کند.
bang
-
Frame $1
-
cursor 0/1
- نمایش مکان نما (۱) و یا مخفی کردن آن (۰)
border 0/1
-کشیدن یک حاشیه به دور پنجره (۱) و یا نداشتن حاشیه (۰)
offset x y
-تعیین موقعیتی که پنجره در ان کشیده میشود.مختصات صفحه از گوشه ی سمت چپ بالا. و واحد ان پیکسل میباشد.
dimen x y
-تعیین اندازه طول و عرض پنجره گرافیکی در واحد پیکسل
fullscreen 0/1
- باز کردن پنجره گرافیکی(Gemwin) به صورت تمام صفحه .
'Title 'Name
-تعیین عنوان پنجره گرافیکی (Gemwin)
colore RGB
-تعیین رنگ پس زمینه با استفاده از ۳گانه ی RGB،که در ان رنگ مشکی معادل (۰۰۰) است و رنگ سفید معادل (۱۱۱)
Gemhead & render chain :
یک render chain درواقع یک واحد بصری را به ما معرفی میکند .برای مثال یک مربع در یک Gemwin تعریف شده از یک render chain در PD است.
یک render chain همیشه با یک gemhead شروع میشود و اغلب با یک رندر کردن یک شکل هندسی (دایره، مربع،مکعب ،...) به پایان میرسد.و بین این آغاز و پایان Object هایی که ان واحد بصری را بر اساس الگوی PD پردازش میکنند،از بالا به پایین قرار میگیرند.
همچین ممکن است که هم زمان چند render chain وجود داشته باشد بنا براین زنجیرهای بیشتری هم هستند که با gemhead شروع میشوند.
render chain در gemwin قابل مشاهده میباشد.
gemhead وظیفه فعال/غیر فعال کردن Render chain را از طریق اتصال به یک پیغام ۰/۱ (یا به یکtoggle) را دارد.
ویرایش کردن :
حرکت دادن و تغیر مکان اشکال گرافیکی به ترتیب زیرامکان پذیر است :
-[colorRGB] تنظیم رنگ با چهار پارامتر RGB (واحد اندازه گیری هر رنگ ۰ تا ۱)
-[rotate XYZ] چرخ با استفاده از ۳ پارامتر Xو Yو Z (واحد اندازه گیری درجه)
-[scaleXYZ] تغییر اندازه با استفاده از ۳ پارامتر Xو Yو Z (واحد اندازه گیری GEM)
-[translateXYZ] حرکت دادن با استفاده از ۳ پارامتر Xو Yو Z (واحد اندازه گیری GEM)
هر کدام از این Object ها ۴ ورودی (Inlet) دارند،اولین ورودی مربوط به render chain و ۳ تای دیگر مقدار X،Y،Z یا R،G،B برای ویرایش اشکال گرافیکی میباشند .
واحد اندازه گیریGEM مطلق و تقسیم بندی شده در فضای GEM است .
فضای ۳ بعدی GEM :
فضای GEM با اندازه ی طول ۸ ،عرض ۸ و ارتفاع ۲۰ و به مرکز (۰،۰) میباشد.
GEM یک فضای ۳ بعدی است,بنابراین میتوان با تغییر مختصات X,Y,Z شکل گرافیکی را ویرایش کرد.
چرخش،جابه جایی وgemhead :
هر گونه چرخش وجابه جایی هنگام رندر اعمال میشود،بنابرین اگر قصد دارید چند نوع چرخش متفاوت ایجاد کنید لازم است زنجیر های جداگانه بسازید و هر کدام از این زنجیرها باید با [gemhead] آغاز شود.
برای درک بهتراین موضوع به تصویر زیر دقت فرمایید :
Object های Geos :
Object های اصلی Geos :
[square]- یک مربع رندر میکند
[circle] - یک دایره رندر میکند
[triangle]- یک مثلث رندر میکند
[cube]- یک مکعب رندر میکند
[sphere]- یک کره رندر میکند
[cone]- یک مخروط رندر میکند
Object ها یک ورودی در سمت راست دارند که اندازه ی شکل را که به صورت پیش فرض ۱ است تعیین میکند.
مخروط و کره اشکالی هستند که از تعداد پولیگان های بیشتری تشکیل شده اند،به همین جهت کاملا گرد رندر نمیشوند برای حل این موضوع ورودی مرکزی اندازه را تعیین میکند و ورودی سمت راست تعداد پولیگان ها را مشخص میکند.هرچه تعداد پولیگان ها بیشتر باشد شکل نرم تر خواهد بود.
Lightning :
OpenGLدارای یک سیستم ۳ بعدی نورپردازی "رأس گرا" است که با GEM قابل استفاده میباشد.
نورپردازی یک عملیات پر مصرف است بهعلاوه پیچیدگی صحنه و سرعت پی سی (کاپیوتر) و کارت گرافیکی روی framerate بسیار تاثیر را میگذارند.
GEM میتواند تا ۸ نور را هم زمان رندر کند ،بیشتر ازان پیغام خطا میدهد.
فعال/غیر فعال کردن نور : با یک messagge که شامل ۰ یا ۱ باشد امکان پذیر است.
حالت نور می تواند فعال باقی می ماند حتی زمانی که gemwin را میبندیم.
همچنین اگر در صحنه بیش از یک نور داشته باشیم میتوانیم نور ها را بصورت تکی با قرار دادن پیغام ۰ یا ۱در درون hot-inlet ، خاموش یا روشن کنیم.
world_light :
[world_light] نوری است که تا فاصله ی بی نهایت ادامه پیدا میکند.
همه ی پرتو های نوری ان به صورت موازی میباشند.
رم یا به عبارتی منابع سیستم را کمتر مصرف میکند بنابرین سرعت بیشتری دارد.
این نور قابل چرخش است اما نمیتوان ان را جابه جا کرد.
میتوان از طریق inlet راست رنگ ان را تغییر داد.
یک مخروط است که نشان دهنده ی جهت نور است.
اولین Object است که در Gemhead رندر میشود.
Point_light :
[light] نوری است دارای مختصات در فضای بی نهایت .
قابل جا بجایی و چرخش است.
دارای مختصات است.
از طریق ورودی سمت راست میتوان رنگ ان را تغیر داد.
از طریق message debug برابر ۰ یا ۱ میتوان مختصات نقطه مولد نور را دید.
Moving lights :
پتچ 03.lighting/03.controlLights.pd امکان جا به جایی [light]و [world_light] را در یک صحنه،برای دیدن تفاوت بین این ۲ ابجکت را میدهد.
پتچ patch 03.lighting/04.moveSpheres.pd یک مثال از تغیر مکان ۲ کره در صفحه بی نهایت است.با خاموش و روشن کردن هر یک از نورها میتوان نمایش نور لوکال را در یک فضای بی نهایت داشت.
پتچ patch 03.lighting/05.materials.pd با استفاده از متریال ابجکت ها،به صورت انتخابی رنگ ابجکت را مشخص میکند.
توجه داشته باشد که یک شی diffuse رنگ اولیه را منعکس و یک جسم specular منعکس کننده ی نوری که در ان ناحیه میدرخشد است .
images :
[pix_image] یک عکس با فرمت های (tiff, jpg, sgi,..) را از فایل لود میکند.
میتوان با استفاده از message open یک عکس مشخص را بارگزاری کرد.
با [openpanel] میتوان پنجره انتخاب عکس را باز کرد.
توجه داشته باشد [pix_draw] بسیار کند میباشد و از ان فقط در مثال های ابتدایی استفاده میکنیم.در ادامه بجای ان از [pix_texure] استفاده خواهیم کرد چون قابل اجرایی تر و سریع تر است .
[pix_multiimage] لیستی از عکس ها با فیلتری مشخص را نمایش میدهد،و یک خروجی عکس از عکس مشخص شده یا اولین عکس در ان لیست می دهد.
--(temp*.jpg -----> لیستی از عکس هایی که با temp شروع میشوند را در اختیارمان قرار میدهد.)
[pix_ImageInPlace]یک جایگزین برای [pix_multiimage] است که عکس های موجود در ویدئو را با سرعت بیشترثبت میکند ،اما دیگر امکان ادیت عکس ها یا کار کردن روی آنها وجود ندارد.
برای درک بیشتر موضوع به مثال های موجود در برنامه رجوع کنید :
Gem/Examples/04.pix/
Texture mapping :
عملیات تبدیل داده های پیکسلی به یک شی هندسی میباشد. و با [pix_texture] قابل اجرا میباشد.عملیات رندر را انجام نمیدهد و شی Geos کار رندر را بر عهده دارد.
برای درک بیشتر موضوع به مثال های موجود در برنامه رجوع کنید :
07.texture/01.texture.pd
Video :
[pix_movie] و [pix_film] یک فایل ویدیویی را باز میکنند.
[pix_movie] به طور مستقیم ویدئو را روی یک شی Geos رندر میکند،بنا براین نیازی به وارد کردن بلوک [pix_texture] نیست اما امکان تغییر دادن و کار کردن روی عکس ها وجود ندارد .برای اینکه بتوان روی عکسها کار کرد و تغیر ایجاد کرد باید از بلوک [pix_film] استفاده کنیم.
ورودی سمت راست تعداد فریم ها را مشخص میکند.
برای باز کردن یک فیلم از open استفاده میکنیم.
دستور auto برابر با ۰ یا ۱ دوباره نمایش دادن فیلم به صورت اتوماتیک را فعال یا غیر فعال میکند.
زمانی که فیلم به فریم آخر میرسد، سومین خروجی یک bang را اجرا میکند
به مثال های زیر رجوع کنید :
Gem/Examples/04.pix/
Gem/Examples/05.pix/
بسته به نوع سیستم عامل میتواند تفاوت های در اجرای صحیح فیلم با توجه به کدک های نسب شده وجود داشته باشد .اما به صورت کلی باید فیلم را به فرمت های Avi, Mov, Mpeg تبدیل کرد.
[pix_video] یک منبع ویدیویی متصل و مپینگ شده روی کامپیتر مثل وب کم یا دروبین فیلم برداری باز میکند.
به مثال زیر رجوع کنید :
Gem/examples/04.video/
GEM یک کتابخانه ای از تصاویر و ویدئوها و اشیا ۳ بعدی مبتنی بر OpenGL است .
GEM میتواند در ان واحد (ریل تایم) در تصاویر،ویدئوها،متن ها،مدل های۳ بعدی واشیا دست کاری کند یا آنها را ترکیب کند یا بین آنها ارتباط برقرار کند و کم وبیش این کار را همانند روش پردازش Audio وMIDI انجام می دهد.
GEM library در نسخه Pd extended وجود دارد و نیاز به دانلود این کتابخانه به صورت جداگانه نیست.
میتوانید مطالب زیادی را از طریق آدرس زیر داخل برنامه puredata بیابید :
Help → Browser...
برای مثال :
• Gem / examples /
• Pure data / manuals / 2.Image /
• Gem / manual / html / index.html
Gemwin :
برای ایجاد و کنترل کردن پنجره گرافیکی تنها راه استفاده کردن از Gemwin است.
در اینجا لیستی از پیام هایی که gemwin شامل میشود را میاوریم :
(برای تنظیم کردن پنجره گرافیکی قبل از ایجاد ان)
Gemwin |
-ازاین دستور برای ایجاد بستری ( پنجره گرافیکی ) جهت رندر کردن یک محتوای OpenGL استفاده میشود.
destroy
-پنجره گرافیکی و محتوای OpenGL ان را میبندد.
" ۱ "-رندرینگ را شروع می کند.
" ۰ " -رندرینگ را متوقف کند.
bang
-
Frame $1
-
cursor 0/1
- نمایش مکان نما (۱) و یا مخفی کردن آن (۰)
border 0/1
-کشیدن یک حاشیه به دور پنجره (۱) و یا نداشتن حاشیه (۰)
offset x y
-تعیین موقعیتی که پنجره در ان کشیده میشود.مختصات صفحه از گوشه ی سمت چپ بالا. و واحد ان پیکسل میباشد.
dimen x y
-تعیین اندازه طول و عرض پنجره گرافیکی در واحد پیکسل
fullscreen 0/1
- باز کردن پنجره گرافیکی(Gemwin) به صورت تمام صفحه .
'Title 'Name
-تعیین عنوان پنجره گرافیکی (Gemwin)
colore RGB
-تعیین رنگ پس زمینه با استفاده از ۳گانه ی RGB،که در ان رنگ مشکی معادل (۰۰۰) است و رنگ سفید معادل (۱۱۱)
Gemhead & render chain :
یک render chain درواقع یک واحد بصری را به ما معرفی میکند .برای مثال یک مربع در یک Gemwin تعریف شده از یک render chain در PD است.
یک render chain همیشه با یک gemhead شروع میشود و اغلب با یک رندر کردن یک شکل هندسی (دایره، مربع،مکعب ،...) به پایان میرسد.و بین این آغاز و پایان Object هایی که ان واحد بصری را بر اساس الگوی PD پردازش میکنند،از بالا به پایین قرار میگیرند.
همچین ممکن است که هم زمان چند render chain وجود داشته باشد بنا براین زنجیرهای بیشتری هم هستند که با gemhead شروع میشوند.
render chain در gemwin قابل مشاهده میباشد.
gemhead وظیفه فعال/غیر فعال کردن Render chain را از طریق اتصال به یک پیغام ۰/۱ (یا به یکtoggle) را دارد.
ویرایش کردن :
حرکت دادن و تغیر مکان اشکال گرافیکی به ترتیب زیرامکان پذیر است :
-[colorRGB] تنظیم رنگ با چهار پارامتر RGB (واحد اندازه گیری هر رنگ ۰ تا ۱)
-[rotate XYZ] چرخ با استفاده از ۳ پارامتر Xو Yو Z (واحد اندازه گیری درجه)
-[scaleXYZ] تغییر اندازه با استفاده از ۳ پارامتر Xو Yو Z (واحد اندازه گیری GEM)
-[translateXYZ] حرکت دادن با استفاده از ۳ پارامتر Xو Yو Z (واحد اندازه گیری GEM)
هر کدام از این Object ها ۴ ورودی (Inlet) دارند،اولین ورودی مربوط به render chain و ۳ تای دیگر مقدار X،Y،Z یا R،G،B برای ویرایش اشکال گرافیکی میباشند .
واحد اندازه گیریGEM مطلق و تقسیم بندی شده در فضای GEM است .
فضای ۳ بعدی GEM :
فضای GEM با اندازه ی طول ۸ ،عرض ۸ و ارتفاع ۲۰ و به مرکز (۰،۰) میباشد.
Gem |
Gem |
GEM یک فضای ۳ بعدی است,بنابراین میتوان با تغییر مختصات X,Y,Z شکل گرافیکی را ویرایش کرد.
Gem Space |
هر گونه چرخش وجابه جایی هنگام رندر اعمال میشود،بنابرین اگر قصد دارید چند نوع چرخش متفاوت ایجاد کنید لازم است زنجیر های جداگانه بسازید و هر کدام از این زنجیرها باید با [gemhead] آغاز شود.
برای درک بهتراین موضوع به تصویر زیر دقت فرمایید :
چرخش،جابجایی و Gemhead |
Object های اصلی Geos :
[square]- یک مربع رندر میکند
[circle] - یک دایره رندر میکند
[triangle]- یک مثلث رندر میکند
[cube]- یک مکعب رندر میکند
[sphere]- یک کره رندر میکند
[cone]- یک مخروط رندر میکند
Object ها یک ورودی در سمت راست دارند که اندازه ی شکل را که به صورت پیش فرض ۱ است تعیین میکند.
مخروط و کره اشکالی هستند که از تعداد پولیگان های بیشتری تشکیل شده اند،به همین جهت کاملا گرد رندر نمیشوند برای حل این موضوع ورودی مرکزی اندازه را تعیین میکند و ورودی سمت راست تعداد پولیگان ها را مشخص میکند.هرچه تعداد پولیگان ها بیشتر باشد شکل نرم تر خواهد بود.
Lightning :
OpenGLدارای یک سیستم ۳ بعدی نورپردازی "رأس گرا" است که با GEM قابل استفاده میباشد.
نورپردازی یک عملیات پر مصرف است بهعلاوه پیچیدگی صحنه و سرعت پی سی (کاپیوتر) و کارت گرافیکی روی framerate بسیار تاثیر را میگذارند.
GEM میتواند تا ۸ نور را هم زمان رندر کند ،بیشتر ازان پیغام خطا میدهد.
فعال/غیر فعال کردن نور : با یک messagge که شامل ۰ یا ۱ باشد امکان پذیر است.
حالت نور می تواند فعال باقی می ماند حتی زمانی که gemwin را میبندیم.
همچنین اگر در صحنه بیش از یک نور داشته باشیم میتوانیم نور ها را بصورت تکی با قرار دادن پیغام ۰ یا ۱در درون hot-inlet ، خاموش یا روشن کنیم.
world_light :
[world_light] نوری است که تا فاصله ی بی نهایت ادامه پیدا میکند.
همه ی پرتو های نوری ان به صورت موازی میباشند.
رم یا به عبارتی منابع سیستم را کمتر مصرف میکند بنابرین سرعت بیشتری دارد.
این نور قابل چرخش است اما نمیتوان ان را جابه جا کرد.
میتوان از طریق inlet راست رنگ ان را تغییر داد.
یک مخروط است که نشان دهنده ی جهت نور است.
اولین Object است که در Gemhead رندر میشود.
world_light |
[light] نوری است دارای مختصات در فضای بی نهایت .
قابل جا بجایی و چرخش است.
دارای مختصات است.
از طریق ورودی سمت راست میتوان رنگ ان را تغیر داد.
از طریق message debug برابر ۰ یا ۱ میتوان مختصات نقطه مولد نور را دید.
Point_light |
پتچ 03.lighting/03.controlLights.pd امکان جا به جایی [light]و [world_light] را در یک صحنه،برای دیدن تفاوت بین این ۲ ابجکت را میدهد.
پتچ patch 03.lighting/04.moveSpheres.pd یک مثال از تغیر مکان ۲ کره در صفحه بی نهایت است.با خاموش و روشن کردن هر یک از نورها میتوان نمایش نور لوکال را در یک فضای بی نهایت داشت.
پتچ patch 03.lighting/05.materials.pd با استفاده از متریال ابجکت ها،به صورت انتخابی رنگ ابجکت را مشخص میکند.
توجه داشته باشد که یک شی diffuse رنگ اولیه را منعکس و یک جسم specular منعکس کننده ی نوری که در ان ناحیه میدرخشد است .
images :
[pix_image] یک عکس با فرمت های (tiff, jpg, sgi,..) را از فایل لود میکند.
میتوان با استفاده از message open یک عکس مشخص را بارگزاری کرد.
open_image |
با [openpanel] میتوان پنجره انتخاب عکس را باز کرد.
open_image |
توجه داشته باشد [pix_draw] بسیار کند میباشد و از ان فقط در مثال های ابتدایی استفاده میکنیم.در ادامه بجای ان از [pix_texure] استفاده خواهیم کرد چون قابل اجرایی تر و سریع تر است .
[pix_multiimage] لیستی از عکس ها با فیلتری مشخص را نمایش میدهد،و یک خروجی عکس از عکس مشخص شده یا اولین عکس در ان لیست می دهد.
--(temp*.jpg -----> لیستی از عکس هایی که با temp شروع میشوند را در اختیارمان قرار میدهد.)
[pix_ImageInPlace]یک جایگزین برای [pix_multiimage] است که عکس های موجود در ویدئو را با سرعت بیشترثبت میکند ،اما دیگر امکان ادیت عکس ها یا کار کردن روی آنها وجود ندارد.
برای درک بیشتر موضوع به مثال های موجود در برنامه رجوع کنید :
Gem/Examples/04.pix/
pix_multiimage |
عملیات تبدیل داده های پیکسلی به یک شی هندسی میباشد. و با [pix_texture] قابل اجرا میباشد.عملیات رندر را انجام نمیدهد و شی Geos کار رندر را بر عهده دارد.
برای درک بیشتر موضوع به مثال های موجود در برنامه رجوع کنید :
07.texture/01.texture.pd
Texture mapping |
یک عکس (که از هر منبعی اعم از :فایل تصویری،فایل ویدیویی،وب کم ،...) میتواند روی هرشی از Geos رندر شود.
[pix_movie] و [pix_film] یک فایل ویدیویی را باز میکنند.
[pix_movie] به طور مستقیم ویدئو را روی یک شی Geos رندر میکند،بنا براین نیازی به وارد کردن بلوک [pix_texture] نیست اما امکان تغییر دادن و کار کردن روی عکس ها وجود ندارد .برای اینکه بتوان روی عکسها کار کرد و تغیر ایجاد کرد باید از بلوک [pix_film] استفاده کنیم.
ورودی سمت راست تعداد فریم ها را مشخص میکند.
برای باز کردن یک فیلم از open استفاده میکنیم.
دستور auto برابر با ۰ یا ۱ دوباره نمایش دادن فیلم به صورت اتوماتیک را فعال یا غیر فعال میکند.
زمانی که فیلم به فریم آخر میرسد، سومین خروجی یک bang را اجرا میکند
به مثال های زیر رجوع کنید :
Gem/Examples/04.pix/
Gem/Examples/05.pix/
بسته به نوع سیستم عامل میتواند تفاوت های در اجرای صحیح فیلم با توجه به کدک های نسب شده وجود داشته باشد .اما به صورت کلی باید فیلم را به فرمت های Avi, Mov, Mpeg تبدیل کرد.
[pix_video] یک منبع ویدیویی متصل و مپینگ شده روی کامپیتر مثل وب کم یا دروبین فیلم برداری باز میکند.
به مثال زیر رجوع کنید :
Gem/examples/04.video/