我正在寻找关于“最好的方法”来接近某些事情的提示和提示。我想要导入或创建几何体(最初是圆柱体),隔离它的一半,然后移动顶点,然后再将它作为.obj或.stl导出。我知道有些库可以做到这一点,但是我需要这个才能在Android上工作,而库(据我所知)不这样做。我在3DMax中制作了这些图像来解释我的意思。我可以处理大部分编码,但几何数学我无法理解。
我已经根据书中的一个例子改编了这种创建圆柱体的方法:处理2:创意编码热门......
float[][] vertx;
float[][] verty;
void setup() {
size(800, 600, P3D);
vertx = new float[36][36];//36 triangle strips, 36 vertices
verty = new float[36][36];
}
void draw() {
hint( ENABLE_DEPTH_TEST );
pushMatrix();
background(125);
fill(255);
strokeWeight(0.5);
translate( width/2, height/2, 200);
rotateX(radians(-45));
scale( 1 );
translate(0, -50, 0);
initPoints();
beginShape(TRIANGLE_STRIP );
for ( int h = 1; h < 36; h++) {
for ( int a = 0; a<37; a++ ) {
int aa = a % 36;
// normal( vertx[h][aa], 0, verty[h][aa]);
vertex( vertx[h][aa], h*5.0, verty[h][aa] );
//normal( vertx[h-1][aa], 0, verty[h-1][aa]);
vertex( vertx[h-1][aa], (h-1)*5.0, verty[h-1][aa] );
}
}
endShape();
beginShape(TRIANGLE_FAN); //bottom
int h = 35;
vertex( 0, h*5, 0 );
for ( int a = 0; a<37; a++ ) {
int aa = a % 36;
vertex( vertx[h][aa], h*5, verty[h][aa] );
}
endShape();
popMatrix();
hint(DISABLE_DEPTH_TEST);
}
float getR( float a, float h ) {
float r = 50;
return r;
}
void initPoints() {
for ( int h = 0; h < 36; h++) {
for ( int a = 0; a<36; a++) {
float r = getR( a*10.0, h*5.0 ); //a = 10 (360/36)
vertx[h][a] = cos( radians( a*10.0 )) * r;
verty[h][a] = sin( radians( a*10.0 )) * r;
}
}
}
...我假设有可能从阵列中隔离/抓取某些顶点?
任何其他方法,或任何有关如何开发此方法的建议?是导入&gt;转换方法甚至可能吗? @Spektre - 可能有比这更好的方法吗?
答案 0 :(得分:0)
这是一个非常普遍的问题,所以我会给你一个通用答案。
您的第一步是真正消化您发布的代码:对vertex()
的每次调用都做了什么?每个顶点放在哪里?您应该能够编写自己的代码来绘制圆柱体,而无需复制粘贴此代码中的任何内容。你应该能够绘制其他形状。首先只绘制几个顶点以查看它们显示的位置,然后再添加几个,然后再添加一些顶点,直到您完全理解此代码的作用为止。
有大量的教程可以帮助您理解代码。 Here是一个2D教程,可以帮助您入门(首先阅读(和理解)),here是3D版本。
一旦你有了这个工作,你应该很容易操纵顶点你想要的。如果您希望用户能够选择一个顶点,可以使用&#34; 3d点选择&#34;为了大量的资源。
最后,我不确定Processing是否提供了一种导出.obj文件的简便方法。但再次,谷歌是你的朋友 - 尝试谷歌搜索类似&#34;处理导出obj文件&#34;对于一些似乎有助于实现目标的图书馆。
如果您遇到特定步骤,请发布MCVE并提出具体问题。祝你好运!