Кіріспе

3D модельді анықтауға арналған көпбұрыштар жиынтығы. 3D компьютерлік графикада және қатты денелерді модельдеуде, көпбұрыш тор – көпбұрышты нысанның пішінін анықтайтын төбелер, қабырғалар және жақтар жиынтығы. Жақтар көбінесе үшбұрыштардан (үшбұрыш тор), төртбұрыштардан (төртбұрыштар) немесе басқа қарапайым дөңес көпбұрыштардан (n-бұрыштардан) тұрады, себебі бұл көрсетуді (рендерингті) жеңілдетеді, бірақ иісті көпбұрыштардан немесе тіпті тесіктері бар көпбұрыштардан да құралуы мүмкін. Көпбұрыш торларын зерттеу – компьютерлік графиканың (әсіресе 3D компьютерлік графиканың) және геометриялық модельдеудің маңызды саласы. Көпбұрыш торларының әртүрлі түрлері әртүрлі қолданыстар мен мақсаттар үшін қолданылады. Торларда орындалатын операциялардың түрлері: Бульдік логика (құрылымдық геометрия), тегістеу, қарапайымдау және тағы да басқалар. Сондай-ақ, сәулелерді іздеу, соқтығысуды анықтау және көпбұрыш торларымен қатты дене динамикасы үшін алгоритмдер бар. Егер тордың қабырғалары жақтардың орнына көрсетілсе, модель сымдық модельге айналады. Көлемдік торлар көпбұрыш торларынан өзгеше, себебі олар құрылымның бетін де, көлемін де нақты көрсетеді, ал көпбұрыш торлары тек бетін ғана нақты көрсетеді (көлем жасырын). Торды жасау үшін бірнеше әдіс бар, соның ішінде «маршырушы кубтар» алгоритмі де бар.

Өкілдіктер

Көпбұрышты торлар вертикальдар, жиектер және беттер туралы деректерді сақтау үшін әртүрлі әдістерді пайдалана отырып, әртүрлі тәсілдермен бейнеленуі мүмкін. Оларға:

Беттік-вертикальдық торлар – вертикальдардың қарапайым тізімі және осы вертикальдарға сілтеме жасайтын көпбұрыштар жиынтығы. Қанатты жиекті торлар – әрбір жиегі екі вертикальға, екі бетке және оларға жанасатын төрт (сағат тілі бойынша және сағат тіліне қарсы) жиекке бағытталған торлар. Қанатты жиекті торлар бетін тұрақты уақытта аралауға мүмкіндік береді, бірақ сақтау көлемі жоғары. Жартылай жиекті торлар – қанатты жиекті торларға ұқсас, бірақ жиектің аралау ақпаратының жартысы ғана қолданылады. (OpenMesh-ке қараңыз) Төртбұрышты жиекті торлар – жиектерді, жартылай жиектерді және вертикальдарды көпбұрыштарға сілтемесіз сақтайды. Көпбұрыштар бейнелеуде жасырын және құрылымды аралау арқылы табылады. Жад көлемі жартылай жиекті торларға ұқсас. Бұрыштық кестелер – вертикальдарды алдын ала анықталған кестеде сақтайды, сонда кесте арқылы өту көпбұрыштарды анықтайды. Бұл, по сути, аппараттық графикалық рендерингте қолданылатын үшбұрышты желдеткіш. Бейнелеу ықшам және көпбұрыштарды алу тиімді, бірақ көпбұрыштарды өзгерту операциялары баяу. Сонымен қатар, бұрыштық кестелер торларды толыққанды бейнелемейді. Көптеген торларды бейнелеу үшін бірнеше бұрыштық кестелер (үшбұрышты желдеткіштер) қажет. Вертикаль-вертикальдық торлар – "VV" торы тек басқа вертикальдарға сілтеме жасайтын вертикальдарды бейнелейді. Жиек және бет туралы ақпарат бейнелеуде жасырын. Дегенмен, бейнелеудің қарапайымдылығы торлармен көптеген тиімді операцияларды орындауға мүмкіндік бермейді. Жоғарыда аталған әрбір бейнелеудің өзіндік артықшылықтары мен кемшіліктері бар, олар Смит (2006) еңбегінде кеңінен талқыланған. Деректер құрылымын таңдау қолданбаға, қажетті өнімділікке, деректер көлеміне және орындалатын операцияларға байланысты. Мысалы, үшбұрыштармен жұмыс істеу, әсіресе есептеу геометриясында, жалпы көпбұрыштарға қарағанда оңай. Кейбір операциялар үшін жиектер немесе көршілес беттер сияқты топологиялық ақпаратқа жылдам қол жеткізу қажет; бұл қанатты жиектер бейнелеуі сияқты күрделі құрылымдарды қажет етеді. Аппараттық рендеринг үшін ықшам, қарапайым құрылымдар қажет; сондықтан бұрыштық кесте (үшбұрышты желдеткіш) DirectX және OpenGL сияқты төменгі деңгейдегі рендеринг API-ларына жиі енгізіледі.

Көзден-көзге жалғанушы торлар

Төбе-төбе торлары объектіні басқа төбелерге қосылған төбелер жиынтығы ретінде көрсетеді. Бұл ең қарапайым бейнелеу тәсілі, бірақ бет және жиек туралы ақпарат жасырын болғандықтан кеңінен қолданылмайды. Сондықтан, рендеринг үшін беттер тізімін жасау үшін деректерді қарап шығу қажет. Сонымен қатар, жиектер мен беттерге операциялар жасау қиынға түседі. Дегенмен, ТТ торлары кішкентай сақтау кеңістігімен және пішіннің тиімді өзгеруімен ерекшеленеді. Жоғарыдағы суретте төрт жақты қорап ТТ тор арқылы бейнеленген. Әрбір төбе өзіне жақын төбелердің индексін көрсетеді. "Қорап цилиндрінің" жоғарғы және төменгі ортасындағы 8 және 9 нүктелері бес емес, төрт төбеге қосылған. Кез келген жүйе кез келген берілген төбеге қосылған кез келген санындағы төбелерді басқаруға қабілетті болуы керек. ТТ торларының толық сипаттамасы үшін Smith (2006) еңбегіне жүгініңіз.

Динамикалық торларды рендерлеу

Қанатты жиекті торлар геометрияны динамикалық түрде өзгертуге мүмкіндік беретін жалғыз бейнелеу емес. Қанатты жиек торларын және бет-төбе торларын біріктіретін жаңа бейнелеу – рендерлік динамикалық тор, ол беттің төбелерін (FV торлары сияқты) және жиектің беттерін мен төбелерін (қанатты жиек сияқты) нақты сақтайды. Рендерлік динамикалық торлар стандартты қанатты жиек торларына қарағанда аздап аз жад орынды қажет етеді және беттер тізімінде төбелердің индексі болғандықтан, графикалық аппаратпен тікелей көрсетілуі мүмкін. Бұдан бөлек, төбеден бетке және беттен төбеге өту нақты (тұрақты уақыт) болып табылады. RD торларына төрт шығу жиегі қажет емес, себебі оларды жиектен бетке, содан кейін көрші жиекке өту арқылы табуға болады. RD торлары геометрияны динамикалық түрде жаңартуға мүмкіндік беру арқылы қанатты жиек торларының артықшылықтарын пайдаланады. Толығырақ ақпарат алу үшін Тоблер және Майерхофердің (WSCG 2006) еңбегіне жүгініңіз.

Түйір торларының жиынтығы

ОперацияVertex vertexFace vertexWinged edgeRender динамикалықV VБарлық vertexExplicitV нүктесінің айналасындағы vertex-тер → f1, f2, f3, → v1, v2, v3, V → e1, e2, e3, → v1, v2, v3, V → e1, e2, e3, → v1, v2, v3, E FБеттің барлық жиектеріF(a,b,c) → {a,b}, {b,c}, {a,c}F → {a,b}, {b,c}, {a,c}ExplicitExplicitV FБеттің барлық vertex-теріF(a,b,c) → {a,b,c}ExplicitF → e1, e2, e3 → a, b, cExplicitF VVertex-тің айналасындағы барлық беттерЖұптау іздеуExplicitV → e1, e2, e3 → f1, f2, f3, ExplicitE Vertex-тің айналасындағы барлық жиектерV → {v,v1}, {v,v2}, {v,v3}, V → f1, f2, f3, → v1, v2, v3, ExplicitExplicitF EЖиектің екі жағындағы беттерТізімді салыстыруТізімді салыстыруExplicitExplicitV EЖиектің екі vertex-іE(a,b) → {a,b}E(a,b) → {a,b}ExplicitExplicitFІздеу Белгілі vertex-термен бетті табуF(a,b,c) → {a,b,c}v1,v2,v3 жиынының қиылысыv1,v2,v3 жиынының қиылысыv1,v2,v3 жиынының қиылысыСақтау көлеміV*avg(V,V)3F + V*avg(F,V)3F + 8E + V*avg(E,V)6F + 4E + V*avg(E,V)Мысал: 10 vertex, 16 бет, 24 жиек:10 * 5 = 503*16 + 10*5 = 983*16 + 8*24 + 10*5 = 2906*16 + 4*24 + 10*5 = 242Сурет 6: торлық өкілдік операцияларының қорытындысы

Жоғарыдағы кестеде, explicit операцияның тікелей сақталатын деректер арқылы тұрақты уақытта орындала алатынын көрсетеді; тізімді салыстыру операцияны орындау үшін екі тізім арасында тізімді салыстыру жүргізілуі керек екенін көрсетеді; және жұптау іздеу екі индекс бойынша іздеу жүргізілуі керек екенін көрсетеді. avg(V,V) белгісі - берілген vertex-ке қосылған vertex-тердің орташа саны; avg(E,V) белгісі - берілген vertex-ке қосылған жиектердің орташа саны, ал avg(F,V) белгісі - берілген vertex-ке қосылған беттердің орташа саны. "V → f1, f2, f3, → v1, v2, v3" белгісі операцияны орындау үшін бірнеше элементтер арқылы өту қажет екенін сипаттайды. Мысалы, бет-vertex торларын пайдаланып "берілген V vertex-інің айналасындағы барлық vertex-терді" алу үшін, алдымен, берілген V vertex-інің айналасындағы беттерді vertex тізімін пайдалана отырып табу керек. Содан кейін, сол беттерден бет тізімін қолданып, олардың айналасындағы vertex-терді табыңыз. Қанатқа салынған жиектер барлық ақпаратты сақтайды, ал басқа операциялар қосымша ақпаратты алу үшін әрқашан жиекке бірінші жүреді. Vertex vertex mesh - бұл берілген vertex-тің көршілес vertex-терін анық сақтайтын жалғыз өкілдік. Торлық өкілдіктер күрделірек болған сайын (қорытындыда солдан оңға қарай), нақты сақталатын ақпарат көлемі артады. Бұл әртүрлі элементтердің тура, тұрақты уақытын, өтетін жеріне және топологиясына қол жеткізуді береді, бірақ индекстерді дұрыс ұстау үшін үстеме шығындар мен кеңістіктің артуына әкеледі. 7-суретте осы мақалада сипатталған төрт техниканың әрқайсысы үшін қосылу туралы ақпарат көрсетілген. Басқа өкілдіктер де бар, мысалы жартылай жиек және бұрыштық үстелдер. Бұлардың барлығы - vertex-тер, беттер мен жиектердің бір-біріне индекстелуінің нұсқалары. Жалпы ереже бойынша, беттік vertex торлары геометриясын (байланыстылығын) өзгертпейтін, бірақ статикалық немесе морфты объектілерді нақты уақыт режиміне келтіру сияқты формасын (vertex-терінің орналасуын) өзгертпейтін графикалық аппараттарда нысанды көрсету керек болған кезде қолданылады. Қанатқа салынған жиек немесе рендерлік динамикалық торлар геометрия өзгергенде, мысалы интерактивті модельдеу пакеттерінде немесе бөлшек беттерді есептеу үшін қолданылады. Vertex vertex mesh-тер геометрия немесе топологиядағы тиімді, күрделі өзгерістер үшін өте қолайлы, егер аппараттық рендерингті алаңдатпаса.

Басқа бейнелеулер

Ағызатын торлар беттерді реттелген, бірақ тәуелсіз түрде сақтайды, сондықтан торды бөліктермен жіберуге болады. Беттердің реті кеңістіктік, спектрлік немесе тордың басқа қасиеттеріне негізделуі мүмкін. Ағызатын торлар өте үлкен торды әлі де жүктеліп жатқан кезде де көрсетуге мүмкіндік береді. Прогрессивті торлар төбелер мен беттер деректерін күшейе түсетін егжей-тегжейлілік деңгейлерімен жібереді. Ағызатын торлардан айырмашылығы, прогрессивті торлар бүкіл объектінің жалпы пішінін береді, бірақ егжей-тегжейлілігі төмен деңгейде. Қосымша деректер, жаңа қабырғалар мен беттер, тордың егжей-тегжейін біртіндеп арттырады. Нормальды торлар негізгі тордан нормальды ығысулар жиынтығы ретінде торға прогрессивті өзгерістерді жібереді. Бұл техникамен, текстуралар тізбегі қажетті инкременттік өзгерістерді көрсетеді. Нормальды торлар ықшам болады, себебі орын ауыстыруды көрсету үшін тек бір скалярлық мән қажет. Дегенмен, бұл техникада ығысу текстураларын жасау үшін күрделі түрлендірулер сериясы қажет.

Файл пішімдері

Көпбұрышты тор деректерін сақтау үшін көптеген түрлі файл пішімдері бар. Әрбір формат оны жасаған адамның мақсатына сай қолданылғанда тиімді болады. Танымал форматтарға fbx, dae, obj және stl кіреді. Кейбір форматтардың тізімі төменде берілген:
Файл қосымшасы Формат атауы Ұйым(дар) Бағдарлама(лар) Сипаттама
raw Raw mesh Белгісіз Әртүрлі Ашық, тек ASCII форматы. Әрбір жолда үш бұрышты үшбұрышты құру үшін бос орындармен бөлінген 3 координата бар: X1 Y1 Z1 X2 Y2 Z2 X3 Y3 Z3
blend Blender файл пішімі Blender Foundation Blender 3D Ашық код, тек бинарлық формат
fbx Autodesk FBX форматы Autodesk Әртүрлі Ғұрыпты. Бинарлық және ASCII сипаттамалары бар.
.3ds 3ds Max файлы Autodesk 3ds Max Бұрыштар мен жақтар санына қатаң 16 биттік шектеулер қойылған, бірақ ескірген, кең таралған формат. Стандартталмаған және жақсы құжатталмаған, бірақ деректер алмасу үшін «де-факто стандарт» болған.
dae Digital Asset Exchange (COLLADA) Sony Computer Entertainment, Khronos Group Белгісіз «COLLAborative Design Activity» дегенді білдіреді. Қателіктерді болдырмау үшін жасалған әмбебап формат.
dgn MicroStation файлы Bentley Systems MicroStation екі dgn файл пішімі бар: 8-ші нұсқадан бұрын және 8-ші нұсқада (V8)
.3dm Rhino файлы Robert McNeel & Associates Rhinoceros 3D
dxf, dwg Drawing Exchange форматы Autodesk AutoCAD
obj Wavefront OBJ Wavefront Technologies 3D геометрияны сипаттайтын әртүрлі ASCII форматы. Барлық жақтардың координаталары сағат тіліне қарсы бағытта орналасады, бұл жақ нормаларын білдіреді. Жұмсақ нормалар әр координатада көрсетіледі.
ply Polygon File Format (Көпбұрышты файл пішімі) Stanford University Әртүрлі Бинарлық және ASCII
pmd Polygon Movie Maker деректері Yu Higuchi MikuMikuDance Құпиялы бинарлық файл пішімі, ол адам тәрізді модель геометриясын, материалды және физикалық ақпаратты сақтайды.
stl Stereolithography форматы (Стереолитография форматы) 3D Systems Көптеген Бинарлық және ASCII формат бастапқыда CNC-ге көмек көрсету үшін жасалған.
amf Additive Manufacturing File Format (Қосымша өндіріс файл пішімі) ASTM International Белгісіз STL форматына ұқсас, бірақ қосымша түстер, материалдар және шоқжұлдыздарды қолдау.
wrl Virtual Reality Modeling Language (Виртуалды шындықты модельдеу тілі) Web3D консорциумы Веб-браузерлер ISO Standard 14772 1:1997
wrz VRML Compressed (VRML қысқартылған) Web3D консорциумы Веб-браузерлер
x3d, x3db, x3dv Extensible 3D (Кеңейтілген 3D) Web3D консорциумы Веб-браузерлер XML негізделген, ашық бастапқы кодты, роялтисіз, кеңейтілетін және өзара әрекеттесетін; сондай-ақ түс, текстура және сахна туралы ақпаратты қолдайды. ISO стандарты 19775/19776/19777
x3dz, x3dbz, x3dvz X3D Compressed Binary (X3D қысқартылған бинарлық) Web3D консорциумы Веб-браузерлер
c4d Cinema 4D файлы Maxon CINEMA 4D
lwo LightWave 3D object файлы NewTek LightWave 3D
smbSCOREC apfRPI SCORECPUMIOPDE негізделген модельдеу жұмыс ағыны үшін ашық бастапқы параллельді бейімделген құрылымсыз 3D торлары.
msh Gmsh Mesh Gmsh әзірлеушілері GMsh жобасы Ашық көз, 1 мен 3 өлшемдегі сызықтық және полиномиялық интерполяцияланған элементтер үшін ASCII тор сипаттамасын ұсынады.
mesh OGRE XML OGRE әзірлеу тобы OGRE, purebasic Ашық бастапқы код. Бинарлық (.mesh) және ASCII (.mesh.xml) пішімі бар. Мұнда координата анимациясы мен Morph нысана анимациясы (blendshape) үшін деректер бар. Скелет анимациясы деректері жеке файлда (.skeleton).
veg Vega FEM тетраэдрлі торы Jernej Barbič Vega FEM Ашық бастапқы код. FEM-ті модельдеу үшін тетраэдрлі тор мен оның материалдық қасиеттерін сақтайды. ASCII (.veg) және бинарлық (.vegb) форматтары бар.
z3d Z3d Oleg Melashenko Zanoza Modeler
vtk VTK mesh VTK, Kitware VTK, Paraview Ашық, ASCII немесе бинарлық формат, онда көптеген әр түрлі деректер өрістері, соның ішінде координаталық деректер, жасуша деректері және өрістік деректер бар.
l4d LAI4D суреті Laboratory of Artificial Intelligence for Design (Дизайн үшін жасанды интеллект зертханасы) LAI4D ASCII деректер форматы, ол субъектілердің иерархиялық ағашын сипаттайды.