آشنایی با فرمت STL
پرینترهای سه بعدی با چه فرمت سه بعدی کار می کننند ؟ فرمت STL چیست؟ در این مقاله قصد داریم آشنایی با فرمت STL پیدا کنیم و به طور کامل با خصوصیات این فرمت آشنا شویم.
در این مقاله قصد داریم آشنایی با فرمت STL را به طور کامل داشته باشیم و توضیحاتی جامع در خصوص نحوۀ کار با این فرمت سه بعدی ارائه دهیم و از مزایا و معایب استفاده از آنها و فرمت های جایگزین و ترفندهای آن اطلاعاتی را به دست آوریم.
فهرست مطالب
به طور خلاصه، فایل STL اطلاعات نرم افزاری و هندسی مربوط به یک مدل سه بعدی را ذخیره می کند. این فرمت فقط هندسۀ سطوح یک جسم سه بعدی را نشان می دهد و هیچ اطلاعاتی در مورد رنگ، بافت یا ویژگیهای دیگر مدل ارائه نمی دهد.
به بیان دیگر فرمت stl می تواند یک خروجی سه بعدی از ابجکت طراحی شده باشد که بدون در نظرگیری خصوصیات بافتی و متریالی ماهیت سه بعدی شکل را ارائه می دهد.
فایل های STL معمولاً توسط یک برنامۀ طراحی سه بعدی کامپیوتری (نرم افزار CAD) پس از مدلسازی، به دست می آید.
در واقع این فرمت در انتهای فرآیند طراحی سه بعدی خروجی گرفته می شود تا بتواند در روند پرینت سه بعدی مورد استفاده قرار بگیرد.
پیشنهاد مطالعه:
فرمت STL متداول ترین فرمت ذخیره سازی فایل برای چاپ سه بعدی است. با ذخیره کردن فایل با این فرمت ، امکان استفاده از آن در نرم افزار اسلایسر فراهم می شود. نرم افزار اسلایسر می تواند G-Code نهایی را تهیه کند.
پیشنهاد مطالعه:
کوتاه شده پسوند STL در طول زمان تغییر کرده است ؛ بسیاری معتقدند که این فایل مخفف عبارت StereoLitoghraphy است. هرچند که گاهی از آن به عنوان نماد Standard Triangle Language یا Standard Tessellation Language هم یاد میشود.
هدف اصلی ذخیره کردن مدل سه بعدی با فرمت STL، رمزگذاری هندسه سطح یک جسم سه بعدی است. این اطلاعات را با استفاده از یک مفهوم ساده به نام Tessellation به معنی لغوی «موزاییک کاری» یا «حجم چهارگوش» کدگذاری می کند. به بیان دیگر مدل سه بعدی در پسوند STL به یک فایل مش بندی شده تبدیل می شود و ساختاری شبکه ای پیدا می کند.
اگر بخواهیم به زبان ساده تری آن را بیان کنیم می توانیم بگوییم stl هندسه یکپارچه طراحی شده را به تعداد زیادی ساختارهای سه گوش که به آن مش می گوییم تقسیم بندی می کنند که این مش ها در کنار هم دیگر تشکیل هندسه نهایی را می دهند.
در سال 1987، «چاک هال» که به تازگی اولین پرینتر سه بعدی استریولیتوگرافی را اختراع کرده بود و «گروه مشاورۀ آلبرت» سعی داشتند راهی برای انتقال اطلاعات مدلهای سه بعدی CAD به چاپگر سه بعدی پیدا کنند. آنها فهمیدند که می توانند از Tessellation های سطوح مدل سه بعدی برای رمزگذاری این اطلاعات استفاده کنند
ایدۀ اولیه این بود که سطوح 2D مدلهای سه بعدی را با استفاده از مثلثهای کوچک (که به آنها Facet هم گفته میشود) کاشی کاری کنند و اطلاعات مربوط به Facet ها را در یک فایل ذخیره کنند.
به طور مثال چنانچه شما یک مکعب سه بعدی ساده را در نظر بگیرید ، این مکعب با 12 مثلث ساخته می شود. در هر طرف دو مثلث وجود دارد. از آنجا که مکعب شش طرف دارد، مجموعاً 12 مثلث مورد استفاده قرار میگیرد.
اگر یک مدل سه بعدی کروی داشته باشید، همانطور که در تصویر می بینید، میتوانید آن را با تعداد زیادی از مثلثهای کوچک بپوشانید.
این موضوع در مدل های پیچیده نیز استفاده می شود.
این گروه به این جمع بندی رسیدند که اگر بتوانند اطلاعات مربوط به این مثلثهای کوچک را در یک فایل ذخیره کنند، آنگاه این فایل می تواند سطوح یک مدل سه بعدی را به طور کامل تشکیل دهد. این موضوع موجب ساخته شدن فرمت STL شد.
فرمت STL چگونه اطلاعات مربوط به مثلث ها را ذخیره می کند؟
فرمت STL دو روش متفاوت برای ذخیرۀ اطلاعات، در مورد Facet های مثلثی که سطح جسم را می پوشاند، دارد. به این روش ها، کدگذاری ASCII و کدگذاری Binary میگویند. در هر دو حالت، این اطلاعات در مورد هر مثلث ذخیره می شود:
فرمت فایل ASCII STL
فرمت ASCII STL با یک خط الزامی شروع می شود.
solid <name>
در جای <name> نام مدل سه بعدی قرار می گیرد. بخش نام را می توان خالی گذاشت اما در این صورت باید بعد از کلمۀ solid فاصله بگذارید.
فایل با اطلاعات مربوط به مثلث های پوششی ادامه می یابد. اطلاعات مربوط به راس و بردار نرمال به این صورت است:
facet normal nx ny nz
outer loop
vertex v1x v1y v1z
vertex v2x v2y v2z
vertex v3x v3y v3z
endloop
endfacet
در اینجا، n به بردار نرمال مثلث مربوط است و V1، V2 و V3 رئوس مثلث هستند. مقادیر مختصات به عنوان عدد یک نقطۀ شناور و به صورت «نشانه- اعشار-e – نشانه- توان»، مثلاً 3.245000e-002، نشان داده می شوند. فایل با یک خط الزامی دیگر به پایان میرسد.
فرمت فایل STL binary
اگر Tessellation شامل مثلثهای زیادی شود، فایل ASCII STL بسیار حجیم خواهد شد. به همین دلیل، یک نسخۀ باینری فشرده تر وجود دارد.
فایل binary STL با یک سرتیتر 80 کاراکتری شروع میشود. این مورد اغلب توسط کاربران فایل STL نادیده گرفته می شود، با برخی استثنائات قابل توجه که بعداً در موردشان صحبت خواهیم کرد؛ بعد از سرتیتر، تعداد کل مثلثها با استفاده از یک عدد صحیح 4 بایتی نشان داده می شود.
UINT8[80] – Header
UINT32 – Number of triangles
در ادامه اطلاعات مربوط به مثلث ها می آید و فایل پس از مثلث آخر به پایان می رسد.
هر مثلث با دوازده عدد نقطۀ شناور 32 بیتی نشان داده می شود. همانند فایل ASCII سه عدد به مختصات سه بعدی دکارتی نرمال مثلث اختصاص دارد. 9 عدد بعدی به مختصات رئوس (هر کدام سه تا) مربوط است. به این صورت:
foreach triangle
REAL32[3] – Normal vector
REAL32[3] – Vertex 1
REAL32[3] – Vertex 2
REAL32[3] – Vertex 3
UINT16 – Attribute byte count
end
توجه داشته باشید که پس از هر مثلث، یک دنبالۀ 2 بایتی وجود دارد که «attribute byte count» یا «ویژگی تعداد بایت» نامیده می شود. معمولاً، این مورد روی صفر تنظیم شده و فاصلۀ بین دو مثلث را ایجاد می کند. با این حال، برخی از نرم افزارها از این 2 بایت برای کدگذاری اطلاعات اضافی در مورد مثلث استفاده می کنند.
فایل STL داری قوانین ویژه ای در Tessellation و ذخیرۀ اطلاعات است. در ادامه با این قوانین آشنا خواهیم شد.
قانون رأس یا Vertex
با توجه به قانون رأس ، هر مثلث باید دو رأس را با مثلث های همسایۀ خود به اشتراک بگذارد.
این قانون باید در زمان Tessellating جسم سه بعدی رعایت شود.
در شکل زیر تصویر سمت چپ اشتباه است زیرا اتصال رئوس آن به درستی انجام نشده است اما در تصویر سمت راست اتصال رئوس به درستی انجام شده است و به بیان دیگر قانون راس رعایت شده است.
با توجه به این قانون، در اینجا نمونه ای از Tessellation معتبر و نامعتبر را می بینید. شکل سمت چپ این قانون را نقض می کند و نامعتبر است، در حالی که شکل سمت راست مطابق قانون و معتبر است.
قانون جهت یا Orientation
قانون جهت می گوید که، جهت مثلث ها باید از دو روش تعیین شود. به بیان دیگر کدام یک جهت به داخل دارند و کدام یک به خارج.
اول، جهت بردارِ نرمال باید به خارج اشاره کند. دوم، هنگام نگاه کردن به جسم از خارج، رئوس باید خلاف جهت عقربه های ساعت قرار داشته باشند (قانون دست راست).
این کار دلایلی دارد. این امر به ثبات داده ها و کشف اطلاعات غلط کمک می کند. برای مثال، نرم افزار می تواند جهت دهی را از طریق بردار نرمال و سپس به وسیلۀ رئوس محاسبه کند و بررسی کند که آیا آنها مطابقت دارند یا خیر. اگر اینگونه نباشد، نرم افزار فایل STL را خراب و غیرقابل استفاده می داند.
قانون اُکتنت های مثبت یا All positive octant
قانون اکتنت های مثبت می گوید که، مختصات رئوس مثلث باید همگی مثبت باشند.
قانون مرتب سازی مثلث های مش
قانون مرتب سازی مثلث می گوید که، مثلث ها باید به ترتیب صعودی مقدار Z ظاهر شوند. این امر به نرم افزار اسلایسر کمک می کند تا مدل های سه بعدی را سریع تر برش دهد. با این حال، در اجرای این قانون اجباری وجود ندارد.
نویسنده : هومن لادن