[英]How to extrude one flat polygon to 3d object in android opengl es2.0?
我有一個2d平面多邊形數據。 字符串s4 =“ 375.7,216.8 384.4,234.1 397.1,231.6 419.4,275.1”;
我可以在android opengl es中顯示2d圖片。 但是現在我需要將其拉伸到3d對象。 很多朋友建議我根據他們的創造
方式:將頂點數組中的每個頂點添加(0,0,z),然后將結果添加到頂點數組中,總共2 * n個頂點。 因此,在您的示例中,您將頂點(0,0,z),(10,0,z),(10,10,z),(0,10,z)添加到頂點數組中...
float []頂點=新的float [sarr.length * 6]; short []索引=新的short [(sarr.length-2)* 6 + sarr.length * 6];
.....但是我無法獲得正確的結果。
誰可以提供代碼來幫助我在android中進行擠壓?
假設您有一個頂點向量和一個索引向量。
向量頂點 向量索引;
步驟1:現在,您首先需要創建拉伸曲面,該曲面是在拉伸距離上相同曲面的副本,並將三角形反轉以面向相反的方向。
unsigned int originalVertexCount = vertices.size();
unsigned int originalIndexCount = indices.size();
for (int i = 0; i < vertices.size(); i++) {
Vertex v = vertices[i];
v.z += extrude;
vertices.push_back(v);
}
索引就是這樣創建的。
for (int i = 0; i < indices.size(); i+=3) {
unsigned int ind1 = indices[i + 0] + originalVertexCount;
unsigned int ind2 = indices[i + 1] + originalVertexCount;
unsigned int ind3 = indices[i + 2] + originalVertexCount;
indices.push_back(ind3);
indices.push_back(ind2);
indices.push_back(ind1);
}
下一步是填充曲面的側面。
for (int i = 0; i < originalVertexCount; i++) {
int nextIndex = i + 1;
if(i + 1 > originalVertexCount)
nextIndex = 0;
unsigned int ind1 = indices[i];
unsigned int ind2 = indices[i] + originalVertexCount;
unsigned int ind3 = indices[nextIndex] + originalVertexCount;
indices.push_back(ind1);
indices.push_back(ind2);
indices.push_back(ind3);
unsigned int ind4 = indices[nextIndex] + originalVertexCount;
unsigned int ind5 = indices[nextIndex];
unsigned int ind6 = indices[i];
indices.push_back(ind4);
indices.push_back(ind5);
indices.push_back(ind6);
}
該代碼沒有經過100%的測試,但是應該可以正常工作,因為該概念與我們在應用程序中用於生產目的的概念相同。 另外,此拉伸是針對z軸的,您可以根據需要在其他軸上應用相同的拉伸。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.