选择顶点并移动它们(Android 的处理 3)
Selecting vertices and moving them (Processing 3 for Android)
我正在寻找关于 "the best way" 的技巧和提示来处理某事。我想导入或创建几何体(最初是圆柱体),隔离其中的一半,移动顶点,然后再次将其导出为 .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;
}
}
}
...我假设可以 isolate/grab 数组中的某些顶点?
关于如何开发这个的任何其他方法或任何建议? import > transform 方法甚至可能吗? @Spektre - 可能有比这更好的方法吗?
这是一个很笼统的问题,所以我给你一个笼统的答案。
您的第一步是真正消化您 post 编辑的代码:对 vertex()
的每次调用都做了什么?每个顶点放在哪里?您应该能够编写自己的代码来绘制一个圆柱体,而不需要 copy-pasting 此代码中的任何内容。您应该能够绘制其他形状。首先只绘制几个顶点以查看它们出现的位置,然后再添加几个,然后再添加几个,直到您完全理解这段代码的作用。
有大量教程可以帮助您理解代码。 Here is a 2D tutorial to get you started (read (and understand) that one first), and here是3D版。
一旦你完成了这项工作,你应该很容易随心所欲地操纵顶点。如果您希望用户能够 select 一个顶点,google 诸如“3d 点拾取”之类的大量资源。
最后,我不确定 Processing 是否提供了导出 .obj 文件的简便方法。但同样,google 是您的朋友 - 尝试使用谷歌搜索 "Processing export obj file" 之类的内容来寻找一些似乎有助于您实现目标的库。
如果您在某个特定步骤遇到困难,post 一个 MCVE 并提出一个特定问题。祝你好运!
我正在寻找关于 "the best way" 的技巧和提示来处理某事。我想导入或创建几何体(最初是圆柱体),隔离其中的一半,移动顶点,然后再次将其导出为 .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;
}
}
}
...我假设可以 isolate/grab 数组中的某些顶点?
关于如何开发这个的任何其他方法或任何建议? import > transform 方法甚至可能吗? @Spektre - 可能有比这更好的方法吗?
这是一个很笼统的问题,所以我给你一个笼统的答案。
您的第一步是真正消化您 post 编辑的代码:对 vertex()
的每次调用都做了什么?每个顶点放在哪里?您应该能够编写自己的代码来绘制一个圆柱体,而不需要 copy-pasting 此代码中的任何内容。您应该能够绘制其他形状。首先只绘制几个顶点以查看它们出现的位置,然后再添加几个,然后再添加几个,直到您完全理解这段代码的作用。
有大量教程可以帮助您理解代码。 Here is a 2D tutorial to get you started (read (and understand) that one first), and here是3D版。
一旦你完成了这项工作,你应该很容易随心所欲地操纵顶点。如果您希望用户能够 select 一个顶点,google 诸如“3d 点拾取”之类的大量资源。
最后,我不确定 Processing 是否提供了导出 .obj 文件的简便方法。但同样,google 是您的朋友 - 尝试使用谷歌搜索 "Processing export obj file" 之类的内容来寻找一些似乎有助于您实现目标的库。
如果您在某个特定步骤遇到困难,post 一个 MCVE 并提出一个特定问题。祝你好运!