Obj به چه معناست؟ چگونه obj را باز کنیم؟ اگر برنامه از لیست قبلاً نصب شده باشد چه باید کرد

این آموزش نحوه بارگذاری مدل ها از فایل های .obj را نشان می دهد
فرمت obj فایل های متنی حاوی داده های بسیار کمی در مورد مدل است. اما به لطف من
سادگی این فایل‌ها را می‌توان تقریباً توسط هر نرم‌افزار مرتبط وارد/اکسپورت کرد.

کد درس برگرفته از درس «بارگذاری بافت ها» است.
عیب فرمت obj این است که اطلاعات مربوط به مواد را ذخیره نمی کند، بنابراین مجبور شدم راه دیگری پیدا کنم.
من از این قالب برای دمو یا بازی استفاده نمی‌کنم، اما دانستن نحوه کار با آن مفید است زیرا
بسیار ساده و محبوب است. در کل باید این درس رو قبل از بارگذاری 3sd می نوشتم...

در این آموزش از وکتور STL استفاده خواهیم کرد. من در درس "loading.3ds" به تفصیل توضیح دادم که این چیست.

در اینجا توضیح کوتاهی از فرمت OBJ آورده شده است. هر برنامه ای که این قالب را صادر و وارد می کند
به روش خودش انجام می دهد برخی از نرمال ها، برخی نام اشیا و غیره را حفظ می کنند.

شما داده ها را بر اساس کاراکتر اول خط می خوانید.

"v" - این خط حاوی راس (x y z) است.

// مثال: v -1 -1 0

پس از خواندن تمام این خطوط، هندسه جسم را به دست خواهید آورد.

"vt" - مختصات بافت شی (U V)

// مثال: vt .99998 .99936

"f" - این خط شامل شاخص های راس برای آرایه چند ضلعی است.
اگر مختصات UV وجود داشته باشد، شامل شاخص های آنها نیز می شود.

// مثال: (فقط رئوس): f 1 2 3

// مثال: (رئوس و بافت): f 1/1 2/2 3/3

حالا بیایید کلاسی بنویسیم که یک فایل .obj را بارگذاری کند.

فایل جدید: obj.h :

#ifndef _OBJ_H
#تعریف_OBJ_H

#شامل "main.h"

// کلاسی که یک فایل OBJ را بارگیری می کند
کلاس CLoadObj(

عمومی:

// شما فقط این تابع را فراخوانی خواهید کرد. شما فقط از ساختار عبور می کنید
// مدل هایی برای ذخیره داده ها و نام فایل برای بارگذاری.
bool ImportObj(t3DModel * pModel، char * strFileName) ;

// حلقه بارگذاری اصلی فراخوانی شده از ImportObj()
void ReadObjFile(t3DModel * pModel);

// اگر خط با "v" شروع شود در ReadObjFile() فراخوانی می شود
void ReadVertexInfo() ;

// اگر خط با "f" شروع شود در ReadObjFile() فراخوانی می شود
void ReadFaceInfo() ;

// پس از بارگیری اطلاعات چند ضلعی فراخوانی می شود
void FillInObjectInfo(t3DMModel * pModel);

// محاسبه نرمال. این مورد نیاز نیست، اما به شدت توصیه می شود.
void ComputeNormals(t3DModel * pModel);

// از آنجایی که فایل‌های .obj نام بافت و اطلاعات مواد را ذخیره نمی‌کنند، ما ایجاد خواهیم کرد
// تابعی که آنها را به صورت دستی تنظیم می کند. materialID - شاخص برای آرایه pMaterial مدل ما.
void SetObjectMaterial(t3DMModel * pModel, int whichObject, int materialID) ;

// برای سهولت در تخصیص مواد به یک شی .obj، اجازه دهید یک تابع برای آن ایجاد کنیم.
// مدل، نام متریال، نام فایل بافت و رنگ RGB را در آن قرار دهید.
// اگر فقط به رنگ نیاز داریم، NULL را به strFile منتقل کنید.
void AddMaterial(t3DModel * pModel، char * strName، char * strFile،
int r = 255، int g = 255، int b = 255);

خصوصی:

// اشاره گر به فایل
FILE * m_FilePointer;

// بردار STL حاوی لیستی از رئوس
بردار< CVector3>m_pVertices;

// بردار STL حاوی لیستی از چند ضلعی ها
بردار< tFace>m_pFaces;

// بردار STL حاوی لیستی از مختصات UV
بردار< CVector2>m_pTextureCoords;

// به ما می گوید که آیا شی مختصات بافت دارد یا خیر
bool m_bObjectHasUV;

// به ما می گوید که ما فقط داده های چند ضلعی را می خوانیم تا بتوانیم چندین شی را بخوانیم
bool m_bJustReadAFace;
} ;

#endif

فایل obj.cpp:
#شامل "main.h"
#شامل "obj.h"


///// تابع فایل .obj را در متغیر مشخص شده از نام فایل مشخص شده بارگذاری می کند.
////////////////////////////// IMPORT OBJ \\\\\\\\\ \*

Bool CLoadObj::ImportObj(t3DModel *pModel، char *strFileName)
{
char strMessage = (0); // برای گزارش یک خطا استفاده خواهد شد

// مطمئن شوید که مدل و نام فایل خالی نباشد
if(!pModel || !strFileName) false;

// فایل مشخص شده را برای خواندن باز کنید
m_FilePointer = fopen(strFileName, "r");

// مطمئن شوید که فایل به درستی باز شده است
if(!m_FilePointer) (
// یک پیام خطا ایجاد کنید
sprintf(strMessage, "Unable to find or open the file: %s", strFileName);
MessageBox(NULL، strMessage، "Error"، MB_OK);
بازگشت نادرست؛
}

// اکنون، داشتن باز کردن فایل، اطلاعات را بخوانید
ReadObjFile(pModel);

// پس از خواندن تمام اطلاعات، نرمال های راس را محاسبه کنید
ComputeNormals (pModel);

// فایل را ببندید
fclose(m_FilePointer);

// و true را برگردانید
بازگشت درست؛
}


///// این تابع حلقه اصلی برای خواندن file.obj است
/////////////////////////////// خواندن فایل OBJ \\\\\\\\\\\\\\\ \\*

Void CLoadObj::ReadObjFile(t3DModel *pModel)
{
char strLine = (0);
char ch = 0;

while(!feof(m_FilePointer))
{
شناور x = 0.0f، y = 0.0f، z = 0.0f؛

// اولین کاراکتر خط فعلی فایل را بخوانید
ch = fgetc(m_FilePointer);

سوئیچ (ch)
{
مورد "v": // بررسی کنید که آیا "v" نیست (ممکن است یک مختصات راس/نرمال/متن باشد)

// اگر فقط اطلاعات مربوط به چند ضلعی را می خواندیم و اکنون در حال خواندن رأس هستیم،
// به این معنی است که ما به شی بعدی رفته ایم و باید داده های مورد قبلی را ذخیره کنیم.
if(m_bJustReadAFace) (
// داده های آخرین شی را در ساختار مدل ذخیره کنید
FillInObjectInfo(pModel);
}

// کل خط فعلی را رمزگشایی کنید
ReadVertexInfo();
زنگ تفريح؛

حالت "f": // اگر کاراکتر اول "f" باشد، این خط چند ضلعی را توصیف می کند

// اگر کاراکتر خط جدید خوانده شده یک رشته خالی است، کاری انجام ندهید.
زنگ تفريح؛

پیش فرض:
// اگر چیزی ناشناخته است، فقط این خط را در "زباله" بخوانید تا بروید
// به بعدی - ما به آن نیاز نداریم.

زنگ تفريح؛
}
}

// اکنون آخرین شیء خوانده شده را ذخیره کنید
FillInObjectInfo(pModel);
}


///// این تابع اطلاعات راس ها را می خواند (راس "v": "vt" UVCoord)
/////////////////////////////// خواندن اطلاعات راس \\\\\\\\\\\\\\\ \\*

Void CLoadObj::ReadVertexInfo()
{
CVector3 vNewVertex = (0);
CVector2 vNewTexCoord = (0);
char strLine = (0);
char ch = 0;

// کاراکتر دوم خط را بخوانید تا ببینید این خط شامل چه چیزی است: رئوس/نرمال/UV
ch = fgetc(m_FilePointer);

// بقیه خط را بخوانید تا به خط بعدی بروید
fgets(strLine, 100, m_FilePointer);

// یک راس جدید به لیست اضافه کنید
m_pVertices.push_back(vNewVertex);
}
else if(ch == "t") // اگر کاراکتر دوم "t" باشد، رشته حاوی مختصات UV ("vt") است.
{
// خواندن مختصات بافت. قالب: "vt u v"
fscanf(m_FilePointer، "%f %f"، &vNewTexCoord.x، &vNewTexCoord.y);

// خط باقیمانده را بخوانید تا به خط بعدی بروید
fgets(strLine, 100, m_FilePointer);

// مختصات بافت جدید را به لیست اضافه کنید
m_pTextureCoords.push_back(vNewTexCoord);

// پرچمی را فعال کنید که نشان می دهد شی دارای مختصات بافت است.
// اکنون می دانیم که رشته های چند ضلعی نه تنها حاوی اندیس هایی خواهند بود
// رئوس، بلکه متن. مختصات ("f 1/1 2/2 3/3")
m_bObjectHasUV = true;
}
else // در غیر این صورت، این ظاهرا یک امر عادی است و ما به آن نیاز نداریم ("vn")
{
// ما در حال محاسبه نرمال های خود هستیم، بنابراین از خط می گذریم
fgets(strLine, 100, m_FilePointer);
}
}


///// اطلاعات چند ضلعی ("f") را می خواند
/////////////////////////////// خواندن اطلاعات چهره \\\\\\\\\\\\\\\\ \\*

Void CLoadObj::ReadFaceInfo()
{
tFace newFace = (0);
char strLine = (0);

// تابع اطلاعات مربوط به چند ضلعی های شی را می خواند.
// این اطلاعات نقاط سه بعدی هستند که چند ضلعی و مختصات UV را تشکیل می دهند.
// اگر یک بافت روی شی اعمال شود.
// اگر شی دارای مختصات بافت باشد، قالب رشته خواهد بود
// مانند این: "f v1/uv1 v2/uv2 v3/uv3"
// در غیر این صورت مانند این است: "f v1 v2 v3"
// توجه! همیشه از کم کردن 1 از شاخص ها اطمینان حاصل کنید
// آرایه ها در c++ از 0 شروع می شوند و ایندکس ها در .obj از 1 شروع می شوند.

// بررسی کنید که آیا شی مختصات بافت دارد یا خیر
if(m_bObjectHasUV)
{
// شاخص های رئوس و مختصات بافت را بخوانید.
fscanf(m_FilePointer، "%d/%d %d/%d %d/%d"، &newFace.vertIndex، &newFace.coordIndex،
&newFace.vertIndex، &newFace.coordIndex،
&newFace.vertIndex، &newFace.coordIndex);
}
else // اگر شی شامل مختصات بافت نباشد
{
// فقط خواندن شاخص های راس
fscanf(m_FilePointer، "%d %d %d"، &newFace.vertIndex،
&newFace.vertIndex،
&newFace.vertIndex);
}

// خط را تا آخر بخوانید تا به خط بعدی بروید
fgets(strLine, 100, m_FilePointer);

// یک چند ضلعی جدید به لیست اضافه کنید
m_pFaces.push_back(newFace);

// این پرچم را روی TRUE قرار دهید تا بدانید که ما فقط یک چند ضلعی را می خوانیم. اگر
// پس از این، راس خوانده می شود - به این معنی که ما به شی بعدی رفته ایم و نیاز داریم
// این یکی را ذخیره کنید.
m_bJustReadAFace = true;

آیا برای باز کردن فایل های .OBJ مشکل دارید؟ ما اطلاعاتی در مورد جمع آوری می کنیم فرمت های فایلو ما می توانیم به شما بگوییم که فایل های OBJ برای چه مواردی مورد نیاز هستند. علاوه بر این، ما برنامه هایی را توصیه می کنیم که برای باز کردن یا تبدیل چنین فایل هایی مناسب هستند.

فرمت فایل .OBJ برای چیست؟

فرمت فایل .objدر درجه اول فرمت فایل Wavefront 3D Model را نشان می دهد ( .obj)، توسط Wavefront Technologies برای برنامه تجسم Advanced Visualizer توسعه یافته است. OBJ یک فرمت متنی برای توصیف هندسه اجسام سه بعدی است که به شما امکان می دهد اشکال حجمی پیچیده را مدل کنید و آنها را به کار ببرید. مواد مختلفو بافت ها

فایل .objجزء اصلی مدل Wavefront 3D است. این سند متنی بزرگ است که کل هندسه مدل را تعریف می کند. علاوه بر فایل .objیک شی یا صحنه معمولی سه‌بعدی Wavefront معمولاً شامل یک یا چند فایل Material Template Library (.mtl) نیز می‌شود که مواد شی را با ارجاع به بافت‌های شطرنجی خارجی تعریف می‌کند، که معمولاً در یک زیرشاخه جداگانه ذخیره می‌شوند (مثلاً «Textures»).



OBJ به یکی از محبوب ترین و پشتیبانی شده ترین فرمت های مدل سه بعدی و توابع صادرات/وارد کردن فایل تبدیل شده است. .objتقریباً در هر ویرایشگر سه بعدی وجود دارد. فایل ها را باز کنید .objبسیاری از برنامه های کاربردی برای مشاهده مدل های سه بعدی قادر به نمایش مدل های موجود با رندر کامل هستند و تعدادی مبدل به شما امکان تبدیل مدل های OBJ را به فرمت های دیگر می دهند. مجموعه ها و کتابخانه های کاملی از مدل ها در این قالب در اینترنت وجود دارد.

علاوه بر این، پسوند .objبه عنوان یک نام برای نوع فایل کد شی کامپایل شده ( .obj) در رابطه با چندین فرمت فایل شی مورد استفاده در پلتفرم مایکروسافت ویندوز. فایل شی ( .obj) با کامپایل کد منبع ایجاد می شود و حاوی کد ماشین خاص پلت فرم و معماری و همچنین داده های پیوندی، ارجاعات متقابل نمادین و سایر داده ها است. بر خلاف فایل های اجرایی کامپایل شده (.exe)، فایل های شی ( .obj) نمی تواند مستقیماً برای اجرا ارسال شود. آنها بیشتر به عنوان کتابخانه های کاربردی عمل می کنند. توسعه قبلی .objمنحصراً برای اشاره به فرمت ماژول شی قابل جابجایی (OMF) در MS-DOS و نسخه‌های 16 بیتی ویندوز استفاده شد.

برنامه هایی برای باز کردن یا تبدیل فایل های OBJ

شما می توانید فایل های OBJ را با برنامه های زیر باز کنید: 

فایل‌های با پسوند .obj حاوی فایل‌هایی از اشیاء سه بعدی هستند که با استفاده از یک برنامه طراحی کامپیوتری ایجاد شده‌اند. چنین فایل هایی ممکن است حاوی نقشه های بافت، مختصات سه بعدی و سایر اطلاعات در مورد اشیاء سه بعدی باشند.

فرمت OBJ در طیف گسترده ای از برنامه های گرافیکی سه بعدی از جمله Microsoft Visual Studio و CADRazor استفاده می شود.

علاوه بر این، پسوند.obj هنگام کار با فایل های شی علوم کامپیوتر استفاده می شود. چنین فایل‌هایی حاوی مجموعه‌ای از دنباله‌ها هستند - دستورالعمل‌هایی که به رایانه میزبان اجازه می‌دهند تا وظایف محول شده را به درستی انجام دهد. در این مورد، فایل های OBJ ممکن است با فایل های ابرداده مربوطه همراه شوند.

فایل های OBJ نیز توسط چندین کامپایلر برای ویندوز تولید می شوند. C و C++. در نتیجه پردازش کد منبع فایل، فایلی با پسوند .obj ظاهر می شود. هنگامی که همه فایل‌های کد منبع در فایل‌های OBJ کامپایل می‌شوند، به یکدیگر پیوند داده می‌شوند تا یک فایل EXE یا DLL تشکیل دهند.

در حوزه های فناوری اطلاعات مربوط به گرافیک سه بعدی، اغلب می توانید مدل هایی را با فرمت OBJ پیدا کنید. فرمت فایل مورد نظر است فایل متنی، که فقط شامل هندسه اشیاء سه بعدی است، یعنی. موقعیت های راس، نرمال های راس و مختصات بافت را ذخیره می کند. اطلاعات مواد در یک فایل MTL ذخیره می شود که با استفاده از دستور mtllib در ابتدای فایل به آن ارجاع داده می شود.

فرمت توضیحات گرافیکی OBJ 3D بسیار محبوب است زیرا توصیف آن ساده است و تقریباً توسط همه ویرایشگرهای سه بعدی پشتیبانی می شود. قبل از بررسی اینکه کدام برنامه‌ها OBJ را باز می‌کنند، باید توجه داشت که گاهی اوقات هدف از باز کردن فایل، مشاهده مدل نیست، بلکه برای مثال، آشنایی با لیستی از نام اشیا یا شمارش تعداد رئوس است. این و سایر مراحل را می توان با باز کردن فایل در یک ویرایشگر متن معمولی مانند Notepad++ انجام داد.

بنابراین، بیایید نحوه باز کردن فایل ها با پسوند OBJ را بررسی کنیم؟ در اینجا محبوب ترین برنامه هایی است که با آنها می توانید به راحتی یک مدل سه بعدی را مشاهده کنید.

چگونه OBJ را در بلندر باز کنیم؟

برای باز کردن یک فایل OBJ در Blender، در منوی اصلی، "File" - "Import" - "Wavefont (.obj)" را در منوی اصلی انتخاب کنید. در کادر محاوره‌ای که باز می‌شود، باید فایل OBJ را مشخص کنید و روی دکمه «وارد کردن OBJ» کلیک کنید.

توجه! برای اینکه تکسچرها علاوه بر چند ضلعی ها نمایش داده شوند، لازم است که مسیرهای فایل MTL در فایل OBJ به درستی مشخص شود و مسیرهای عکس ها نیز باید به درستی در فایل MTL مشخص شوند.

چگونه OBJ را در تری دی مکس باز کنیم؟

یکی دیگر از برنامه های بسیار محبوب مدل سازی سه بعدی Autodesk 3ds Max است. همچنین باید از عملکرد وارد کردن فایل های شخص ثالث استفاده کند: "واردات" - "وارد کردن فرمت های فایل غیر بومی به 3ds Max".

چگونه OBJ را در اسکچاپ باز کنیم؟

SketchUp هم به عنوان یک برنامه دسکتاپ و هم به عنوان یک ویرایشگر آنلاین در دسترس است. برای نسخه آنلاین ثبت نام لازم است حساب. مانند هر ویرایشگر سه بعدی دیگری، Sketchup از وارد کردن بسیاری از فرمت ها، از جمله پسوند OBJ پشتیبانی می کند. برای وارد کردن، از افزونه “OBJ Importer” واقع در تب “Plugins” استفاده کنید. دو گزینه واردات در زیر منوی کشویی موجود است - به عنوان OBJ و به عنوان مش.

چگونه فرمت OBJ را در Archicad باز کنیم؟

هیچ راهی برای باز کردن مستقیم فایل OBJ در Archicad وجود ندارد. برای مشاهده مدل در Archicad شما نیاز دارید:

1. فایل با فرمت OBJ را به 3DS تبدیل کنید. برای این کار می توانید از برنامه های 3DS Max، Cinema 4K و ... استفاده کنید.
2. وارد کردن 3DS با استفاده از ابزار استاندارد: "تعامل" - "3D Studio" - "وارد کردن 3DS به عنوان یک شی GDL...".

چگونه OBJ را در MeshLab باز کنیم؟

برای بارگیری یک مدل با فرمت OBJ در برنامه MeshLab، به منوی بالا بروید و "File" - "Import Mesh..." را انتخاب کنید. پس از انتخاب فایل مورد نظر، مدل سه بعدی در پنجره مرکزی اپلیکیشن باز می شود. برای سهولت مشاهده، می توانید از دکمه ها برای فعال/غیرفعال کردن نمایش رئوس، مرزها و چند ضلعی ها استفاده کنید.

چگونه OBJ را به صورت آنلاین باز کنیم؟

اگر هیچ یک از برنامه های لیست شده را در رایانه خود ندارید، و زمانی برای دانلود آنها ندارید، می توانید از یک نمایشگر آنلاین برای فایل های با پسوند OBJ استفاده کنید. برای انجام این کار، فقط عبارت “obj open online” را در موتور جستجو وارد کنید. به عنوان یک ویرایشگر آنلاین، می توانید از https://threejs.org/editor/ استفاده کنید - نوشته شده در موتور Three.js، که به شما امکان می دهد با استفاده از WebGL با گرافیک های سه بعدی کار کنید.

اکثر علت مشترکمشکل باز کردن فایل OBJ به سادگی عدم نصب برنامه های مناسب بر روی کامپیوتر شما است. در این مورد، کافی است برنامه ای را پیدا کنید، دانلود و نصب کنید که فایل ها را با فرمت OBJ ارائه می دهد - چنین برنامه هایی در زیر موجود است.

سیستم جستجو

پسوند فایل را وارد کنید

کمک

سرنخ

لطفاً توجه داشته باشید که برخی از داده‌های کدگذاری شده از فایل‌هایی که رایانه ما نمی‌خواند، گاهی اوقات در Notepad قابل مشاهده است. به این ترتیب ما قطعات متن یا اعداد را خواهیم خواند - ارزش بررسی این را دارد که آیا این روش در مورد فایل های OBJ نیز کار می کند.

اگر برنامه از لیست قبلاً نصب شده باشد چه باید کرد؟

اغلب یک برنامه نصب شده باید به طور خودکار به فایل OBJ پیوند داده شود. اگر این اتفاق نیفتد، فایل OBJ را می توان با موفقیت به صورت دستی با برنامه تازه نصب شده پیوند داد. به سادگی بر روی فایل OBJ کلیک راست کرده و سپس از لیست موجود گزینه "Choose default program" را انتخاب کنید. سپس باید گزینه “View” را انتخاب کرده و اپلیکیشن مورد علاقه خود را پیدا کنید. تغییرات وارد شده باید با استفاده از گزینه "OK" تایید شود.

برنامه هایی که فایل OBJ را باز می کنند

پنجره ها
سیستم عامل مک
لینوکس

چرا نمی توانم فایل OBJ را باز کنم؟

مشکلات فایل های OBJ می تواند دلایل دیگری نیز داشته باشد. گاهی اوقات حتی نصب نرم افزاری روی رایانه شما که از فایل های OBJ پشتیبانی می کند نیز مشکل را حل نمی کند. دلیل عدم امکان باز کردن و کار با فایل OBJ نیز ممکن است موارد زیر باشد:

پیوندهای نامناسب فایل OBJ در ورودی های رجیستری
- خرابی فایل OBJ که باز می کنیم
- عفونت فایل OBJ (ویروس)
- منابع کامپیوتری بسیار کم
- درایورهای قدیمی
- حذف پسوند OBJ از رجیستری ویندوز
- نصب ناقص برنامه ای که از پسوند OBJ پشتیبانی می کند

رفع این مشکلات باید منجر به باز کردن آزادانه و کار با فایل های OBJ شود. در صورتی که رایانه شما همچنان با فایل‌ها مشکل دارد، باید از یک متخصص کمک بگیرید تا علت دقیق آن را تعیین کند.

کامپیوتر من پسوند فایل را نشان نمی دهد، چه کاری باید انجام دهم؟

در تنظیمات استاندارد سیستم ویندوز، کاربر کامپیوتر پسوند فایل OBJ را نمی بیند. این را می توان با موفقیت در تنظیمات تغییر داد. کافی است به «کنترل پنل» بروید و «مشاهده و شخصی سازی» را انتخاب کنید. سپس باید به "Folder Options" رفته و "View" را باز کنید. در تب "مشاهده" گزینه "پنهان کردن پسوند انواع فایل های شناخته شده" وجود دارد - باید این گزینه را انتخاب کنید و با کلیک بر روی دکمه "OK" عملیات را تأیید کنید. در این مرحله، پسوندهای همه فایل ها، از جمله OBJ، باید بر اساس نام فایل مرتب شده باشند.

آیا مقاله را دوست داشتید؟ با دوستان به اشتراک گذاشتن: