pos機(jī)業(yè)務(wù)對(duì)象

 新聞資訊2  |   2023-07-18 09:50  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)業(yè)務(wù)對(duì)象,chai 3D 之網(wǎng)格對(duì)象的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)業(yè)務(wù)對(duì)象的問(wèn)題,今天pos機(jī)之家(www.nxzs9ef.cn)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!

本文目錄一覽:

1、pos機(jī)業(yè)務(wù)對(duì)象

pos機(jī)業(yè)務(wù)對(duì)象

推薦:將 NSDT 編輯器 加入你的3D開發(fā)工具鏈

介紹

網(wǎng)格對(duì)象是由三角形和頂點(diǎn)組成的形狀

\u2003\u2003在 CHAI3D 中,多邊形網(wǎng)格是定義多面體對(duì)象形狀的頂點(diǎn)和三角形的集合。

\u2003\u2003頂點(diǎn)是一個(gè)位置以及其他信息,例如顏色、法線矢量和紋理坐標(biāo)。由直線連接的兩個(gè)頂點(diǎn)成為一條邊。三個(gè)頂點(diǎn)通過(guò)三條邊相互連接,定義一個(gè)三角形,這是歐幾里得空間中最簡(jiǎn)單的多邊形。

\u2003\u2003網(wǎng)格對(duì)象可以平移、旋轉(zhuǎn)或調(diào)整大小,并具有分配給它們的材質(zhì)和紋理屬性。 以下代碼演示如何創(chuàng)建由 4 個(gè)頂點(diǎn)和 2 個(gè)三角形組成的帶紋理的正方形。

using namespace chai3d;// create a meshobject = new cMesh();// create a texture mapobject->m_texture = cTexture2d::create();// load a texture Fileobject->m_texture->loadFromFile("myTexture.jpg");// enable texture mappingobject1->setUseTexture(true);// set material to whiteobject1->m_material->setWhite();// create verticesint vertex0 = object0->newVertex();int vertex1 = object0->newVertex();int vertex2 = object0->newVertex();int vertex3 = object0->newVertex();// set position, surface normal, and texture coordinate for vertex 0object0->m_vertices->setLocalPos(vertex0,-0.1,-0.1, 0.0);object0->m_vertices->setNormal(vertex0, 0.0, 0.0, 1.0);object0->m_vertices->setTexCoord(vertex0, 0.0, 0.0);// set position, surface normal, and texture coordinate for vertex 1object0->m_vertices->setLocalPos(vertex1, 0.1,-0.1, 0.0);object0->m_vertices->setNormal(vertex1, 0.0, 0.0, 1.0);object0->m_vertices->setTexCoord(vertex1, 1.0, 0.0);// set position, surface normal, and texture coordinate for vertex 2object0->m_vertices->setLocalPos(vertex2, 0.1, 0.1, 0.0);object0->m_vertices->setNormal(vertex2, 0.0, 0.0, 1.0);object0->m_vertices->setTexCoord(vertex2, 1.0, 1.0);// set position, surface normal, and texture coordinate for vertex 3object0->m_vertices->setLocalPos(vertex3,-0.1, 0.1, 0.0);object0->m_vertices->setNormal(vertex3, 0.0, 0.0, 1.0);object0->m_vertices->setTexCoord(vertex3, 0.0, 1.0);// create two triangles by assigning their vertex IDsobject0->m_triangles->newTriangle(vertex0, vertex1, vertex2);object0->m_triangles->newTriangle(vertex0, vertex2, vertex3);

渲染選項(xiàng)材質(zhì)

\u2003\u2003材料屬性定義表面如何反射光線。他們通過(guò)定義顏色值來(lái)實(shí)現(xiàn)這一點(diǎn),其方式與燈光大致相同。材質(zhì)具有漫射(直射)光、環(huán)境(散射)光和鏡面反射(反射)光的顏色值,但這些值定義了光的分量如何從材質(zhì)表面反射。更多信息可以在有關(guān)材料的部分找到。

\u2003\u2003材質(zhì)屬性可以啟用或禁用,并且需要在世界中至少使用一個(gè)光源才能使對(duì)象可見(jiàn)。

using namespace chai3d;// create a meshcMesh* mesh = new cMesh();// add mesh to worldworld->addChild(mesh);// build mesh using a cylinder primitivecCreatePipe(mesh,0.15,0.05,0.06,32,1,cVector3d(-0.05,-0.20, 0.0),cMatrix3d(cDegToRad(0), cDegToRad(0), cDegToRad(170), C_EULER_ORDER_XYZ));// enable material propertycylinder->setUseMaterial(true);// (1) set material by simply assigning a color namemesh->m_material->setBlueCornflower();// (2) or set material by assigning a color values for each componentmesh->m_material->m_ambient.set(0.2, 0.1, 0.1);mesh->m_material->m_diffuse.set(0.6, 0.3, 0.3);mesh->m_material->m_specular.set(1.0, 1.0, 1.0);mesh->m_material->setShininess(10);

頂點(diǎn)顏色

\u2003\u2003可以為網(wǎng)格的每個(gè)頂點(diǎn)指定不同的顏色值。如果三角形的三個(gè)頂點(diǎn)共享不同的顏色,則三角形上任何點(diǎn)的顏色都是通過(guò)三種頂點(diǎn)顏色的插值來(lái)計(jì)算的。

三角形和頂點(diǎn)顏色

\u2003\u2003如果啟用了材料屬性,頂點(diǎn)顏色將與材料顏色組合在一起。通常將材質(zhì)設(shè)置為白色并為不同的頂點(diǎn)分配顏色以產(chǎn)生所需的光暈。如果禁用材質(zhì)屬性,則忽略所有光源,并使用純頂點(diǎn)顏色來(lái)渲染對(duì)象。

using namespace chai3d;// create a meshcMesh* mesh = new cMesh();// add mesh to worldworld->addChild(mesh);// create three new verticesint vertex0 = mesh->newVertex();int vertex1 = mesh->newVertex();int vertex2 = mesh->newVertex();// set position of each vertexmesh->m_vertices->setLocalPos(vertex0, 0.0, 0.0, 0.0);mesh->m_vertices->setLocalPos(vertex1, 0.0, 1.0, 0.0);mesh->m_vertices->setLocalPos(vertex2, 1.0, 1.0, 0.0);// assign color value to each vertexcColorf color(1.0, 0.2, 0.2);mesh->m_vertices->setColor(vertex0, color);mesh->m_vertices->setColor(vertex1, color);mesh->m_vertices->setColor(vertex2, color);// create new triangle from verticesmesh->newTriangle(vertex0, vertex1, vertex2);// enable vertex colorsmesh->setUseVertexColors(true);// compute surface normalsmesh->computeAllNormals();

紋理映射

紋理映射

\u2003\u2003紋理貼圖將應(yīng)用(映射)到形狀或多邊形的表面。此過(guò)程類似于將圖案紙應(yīng)用于純白框。多邊形中的每個(gè)頂點(diǎn)都通過(guò)顯式分配或過(guò)程定義分配一個(gè)紋理坐標(biāo)(在 2d 情況下也稱為 UV 坐標(biāo))。然后,在多邊形的表面插值圖像采樣位置,以生成視覺(jué)結(jié)果,該結(jié)果似乎比使用有限數(shù)量的多邊形可以實(shí)現(xiàn)的更豐富。

\u2003\u2003要了解如何在 CHAI3D 中創(chuàng)建紋理,請(qǐng)參閱本頁(yè)頂部的第一個(gè)示例。

線框圖

\u2003\u2003三角形可以在實(shí)心或線模式下渲染。

(左)固體模式。(右)線框模式。

using namespace chai3d;// enable wireframe rendering modemesh->setWireMode(true);// enable solid rendering modemesh->setWireMode(false);

邊緣

\u2003\u2003要同時(shí)渲染邊和三角形,CHAI3D 提供了顯示三角形的選項(xiàng),并覆蓋根據(jù)相鄰三角形之間所需的最小角度選擇的邊子集。

(左)實(shí)心和邊緣。(右)僅邊緣。

using namespace chai3d;// compute all edges for which adjacent triangles have more than 40 degrees anglemesh->computeAllEdges(40);// set line width="360px",height="auto" />

cColorf color;color.setBlack();mesh->setEdgeProperties(1, color);// (1) enable surfaces and edgesmesh->setShowTriangles(true);mesh->setShowEdges(true);// (2) enable edges onlymesh->setShowTriangles(false);mesh->setShowEdges(true);

面部剔除

\u2003\u2003背面剔除確定網(wǎng)格對(duì)象的三角形是否可見(jiàn)。這是圖形管道中的一個(gè)步驟,用于測(cè)試三角形中的頂點(diǎn)在投影到屏幕上時(shí)是否按順時(shí)針順序顯示。

using namespace chai3d;

// enable cullingobject->setUseCulling(true);

\u2003\u2003如果啟用了面部剔除,但投影在屏幕上的多邊形具有逆時(shí)針纏繞,則它已旋轉(zhuǎn)為背離相機(jī),不會(huì)被繪制。

\u2003\u2003該過(guò)程通過(guò)減少程序繪制的多邊形數(shù)量,使渲染對(duì)象更快、更高效。例如,在城市街道場(chǎng)景中,通常不需要在建筑物背對(duì)攝影機(jī)的側(cè)面繪制多邊形;它們被面向相機(jī)的側(cè)面完全遮擋。

\u2003\u2003通常,如果背面剔除僅包含封閉和不透明的幾何體,則可以假定在渲染場(chǎng)景中不會(huì)產(chǎn)生可見(jiàn)的偽影。在包含透明多邊形的場(chǎng)景中,通過(guò) Alpha 合成過(guò)程,后向多邊形可能會(huì)變得可見(jiàn)。

透明度、半透明性和混合

渲染相機(jī)的半透明鏡頭

\u2003\u2003透明的物理材質(zhì)顯示其后面的對(duì)象未被遮擋,并且不會(huì)從其表面反射光線。透明玻璃是一種近乎透明的材料。雖然玻璃允許大多數(shù)光線不受遮擋地通過(guò),但實(shí)際上它也反射了一些光。完全透明的材料是完全看不見(jiàn)的。

\u2003\u2003半透明物理材質(zhì)顯示其后面的對(duì)象,但這些對(duì)象被半透明材質(zhì)遮擋。此外,半透明材質(zhì)會(huì)反射照射到它的一些光線,使材料可見(jiàn)。半透明材料的物理示例包括透明布料、薄塑料和煙熏玻璃。

\u2003\u2003透明和半透明通常是同義詞。既不透明也不半透明的材料是不透明的。

\u2003\u2003混合是OpenGL的機(jī)制,用于將幀緩沖中已有的顏色與傳入基元的顏色組合在一起。然后,這種組合的結(jié)果將存儲(chǔ)回幀緩沖器中?;旌辖?jīng)常用于模擬半透明的物理材質(zhì)。一個(gè)例子是渲染汽車的煙熏玻璃擋風(fēng)玻璃。駕駛員和內(nèi)飾仍然可見(jiàn),但它們被煙熏玻璃的深色所掩蓋。

表面法線

渲染網(wǎng)格的頂點(diǎn)法線

\u2003\u2003在 CHAI3D 中啟用照明時(shí),法線矢量用于確定在指定頂點(diǎn)或表面上接收的光量。如果尚未定義曲面法線,則可以通過(guò)取該三角形兩條邊的向量叉積來(lái)計(jì)算每個(gè)三角形的法線。 出于調(diào)試目的,可以使用以下調(diào)用顯示曲面法線:

using namespace chai3d;// compute all surface normalsmesh->computeAllNormals();// set normal properties for displaycColorf color;color.setOrangeTomato();mesh->setNormalsProperties(0.01, color);// display surface normalsmesh->setShowNormals(true);

多網(wǎng)格對(duì)象介紹

\u2003\u2003由于網(wǎng)格對(duì)象每個(gè)對(duì)象僅包含一個(gè)材質(zhì)和紋理屬性,因此創(chuàng)建使用材質(zhì)和紋理集合的網(wǎng)格需要使用稱為 cMultiMesh 的不同類,該類將網(wǎng)格列表連接在一起。通過(guò)在單獨(dú)的網(wǎng)格對(duì)象中根據(jù)三角形的材質(zhì)和紋理屬性來(lái)組織三角形,可以有效地構(gòu)建和渲染具有豐富屬性集的復(fù)雜對(duì)象。

using namespace chai3d;// create a multi mesh objectcMultiMesh* multiMesh = new cMultiMesh();// add multi mesh object to worldworld->addChild(multiMesh);// create a first meshcMesh* mesh1 = multiMesh->newMesh();// create a second meshcMesh* mesh2 = multiMesh->newMesh();

文件支持

\u2003\u2003CHAI3D 支持 3DS、OBJ 和 SLT 文件格式來(lái)導(dǎo)入或?qū)С瞿P?。如果您希望?dǎo)入不同格式的文件,可以使用Blender或Visual Enterprise Author(以前稱為Deep Exploration)等應(yīng)用程序來(lái)編輯文件并將其轉(zhuǎn)換為所需的格式。

using namespace chai3d;

// load 3DS model filemultiMesh->loadFromFile("myModel.3ds");// load OBJ model filemultiMesh->loadFromFile("myModel.obj");// load STL model filemultiMesh->loadFromFile("myModel.stl");

// save model to 3DS filemultiMesh->saveToFile("myModel.3ds");// save model to OBJ filemultiMesh->saveToFile("myModel.obj");// save model to STL filemultiMesh->saveToFile("myModel.stl");

碰撞檢測(cè)

\u2003\u2003碰撞檢測(cè)器用于計(jì)算射線與組成網(wǎng)格(或多網(wǎng)格)的任何三角形之間的交點(diǎn)。為了使此操作快速進(jìn)行,CHAI3D 使用邊界體積層次結(jié)構(gòu)或 BVH。BVH 是一組幾何對(duì)象上的樹結(jié)構(gòu)。所有幾何對(duì)象都包裹在構(gòu)成樹的葉節(jié)點(diǎn)的邊界體積中。然后將這些節(jié)點(diǎn)分組為小集合,并包含在較大的邊界體積中。反過(guò)來(lái),這些也以遞歸方式分組并封閉在其他較大的邊界體積中,最終導(dǎo)致樹結(jié)構(gòu)在樹的頂部具有單個(gè)邊界體積。邊界體積層次結(jié)構(gòu)用于有效地支持對(duì)幾何對(duì)象集的多項(xiàng)操作,例如在觸覺(jué)交互計(jì)算、光線追蹤或鼠標(biāo)選擇的碰撞檢測(cè)中。

軸對(duì)齊邊界體積層次結(jié)構(gòu)

\u2003\u2003在 CHAI3D 中,必須在定義三角形后生成邊界體積層次結(jié)構(gòu)。如果修改了三角形或移動(dòng)了頂點(diǎn),則必須再次計(jì)算層次結(jié)構(gòu)。更新碰撞樹時(shí),正確包含世界上使用的最大觸覺(jué)點(diǎn)的半徑非常重要。此信息用于創(chuàng)建足夠大的包絡(luò),以檢測(cè)與半徑小于或等于定義閾值的接觸點(diǎn)的任何交互。

using namespace chai3d;// create axis aligned bounding volume hierarchymultiMesh->createAABBCollisionDetector(toolRadius);

觸覺(jué)效果

網(wǎng)格對(duì)象的觸覺(jué)渲染

\u2003\u2003為了觸覺(jué)渲染網(wǎng)格對(duì)象,CHAI3D使用由Ruspini和Khatib開發(fā)的虛擬“手指代理”算法,類似于Zilles和Salisbury提出的“上帝對(duì)象”。虛擬代理是替代虛擬環(huán)境中物理手指或探測(cè)器的代表性對(duì)象。

Ruspini和Khatib的手指代理算法

\u2003\u2003上圖說(shuō)明了虛擬代理的運(yùn)動(dòng),因?yàn)橛|覺(jué)設(shè)備的位置發(fā)生了變化。代理的運(yùn)動(dòng)試圖始終朝著目標(biāo)移動(dòng)。當(dāng)暢通無(wú)阻時(shí),代理直接向目標(biāo)移動(dòng)。當(dāng)代理遇到障礙物時(shí),無(wú)法直接移動(dòng),但代理仍可以通過(guò)沿一個(gè)或多個(gè)約束曲面移動(dòng)來(lái)縮短到目標(biāo)的距離。選擇運(yùn)動(dòng)以局部最小化到目標(biāo)的距離。當(dāng)代理無(wú)法減少其與目標(biāo)的距離時(shí),它將停止在本地最小配置處。力是通過(guò)對(duì)觸覺(jué)設(shè)備和代理位置之間的虛擬彈簧進(jìn)行建模來(lái)計(jì)算的。彈簧的剛度在材料屬性中定義。

using namespace chai3d;// create collision detectormesh->createAABBCollisionDetector(toolRadius);// set haptic propertiesmesh->m_material->setStiffness(1000);mesh->m_material->setStaticFriction(0.3);mesh->m_material->setDynamicFriction(0.4);

\u2003\u2003還可以通過(guò)材料屬性等級(jí)激活和調(diào)整其他觸覺(jué)效果。觸覺(jué)效果使用勢(shì)場(chǎng)算法,任何通用形狀對(duì)象也支持這些算法。請(qǐng)注意,網(wǎng)格對(duì)象目前不支持磁性效果。

using namespace chai3d;// create a haptic stick-slip effectmesh->createEffectStickSlip();// set haptic propertiesmesh->m_material->setStickSlipForceMax(5.0);mesh->m_material->setStickSlipStiffness(1000);

3D建模學(xué)習(xí)工作室 翻譯整理,轉(zhuǎn)載請(qǐng)標(biāo)明出處!

以上就是關(guān)于pos機(jī)業(yè)務(wù)對(duì)象,chai 3D 之網(wǎng)格對(duì)象的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)業(yè)務(wù)對(duì)象的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://www.nxzs9ef.cn/newsone/86115.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。