我正在制作一个程序来查看3D CAD模型,并希望构建自动爆炸视图.将要查看的所有装配都是轴对称的.有些可能不是,但大多数是.我想找出一种算法,用于将装配体中的零件自动移动到爆炸视图位置.这是我想通过算法实现的一个例子(当然减去标签):
我必须使用的唯一值是每个部分的边界框的中心.如果需要更多信息,我可以计算更多信息,但似乎它应该足够了.我想到的粗略方法是计算从组件原点到轴对称轴每个零件中心的矢量,然后计算相对于中心轴到零件中心的径向矢量.从那里开始,我需要找出一些能够沿着这两个向量的某种组合来缩放每个部分位置的计算.那是我不太确定这个方向的部分.我包含的图像显示了我想要的确切功能,但我希望能够通过任何浮点值缩放位置以展开或收缩爆炸视图,其中1.0是原始的组装模型.有任何想法吗?
我使用OpenGL-ES 1.1编写了一个应用程序,但我想知道是否通过切换到2.0可以找到速度增益.有没有人用大多边形计数模型做过任何测试?我只想渲染具有不同颜色的三角形,没什么花哨的.但是,我想为我的比较测试渲染大约100万个三角形.
我正在尝试在iPad上绘制超过65536个顶点的3d对象,但无法弄清楚我做错了什么.我使用GL_UNSIGNED_SHORT的原始模型运行得很好,但现在使用GL_UNSIGNED_INT,我无法使用glDrawElements命令显示任何内容.这就像渲染器完全忽略了我的glDrawElements线.我正在引用的渲染循环部分如下:
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(assemblyObj->vertices[0])*6, &assemblyObj->vertices[0]);
glNormalPointer(GL_FLOAT, sizeof(assemblyObj->vertices[0])*6, &assemblyObj->vertices[0]);
for (int i = 0; i < assemblyObj->numObjects; i++)
{
glDrawElements(GL_TRIANGLES, assemblyObj->partList[i].faceArray.size(), GL_UNSIGNED_INT, &assemblyObj->partList[i].faceArray[0]);
}
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
Run Code Online (Sandbox Code Playgroud)
顶点定义为:
vector<float> vertices;
Run Code Online (Sandbox Code Playgroud)
每个faceArray定义为:
vector<UInt32> faceArray;
Run Code Online (Sandbox Code Playgroud)
关于我做错了什么的任何建议都阻止了我的几何图形的绘制?
我刚刚在我的3D应用程序中完成了VBO的实现,并且渲染速度提高了大约5-10倍.过去以每秒1-2帧渲染的内容现在以每秒10-11帧的速度呈现.
我的问题是,我是否可以进一步改进渲染速度?三角形条带会有很大的不同吗?当前顶点不在面之间共享,每个面顶点都是唯一但重叠的.
我的设备利用率为100%,Tiler利用率为100%,渲染器利用率为11%,资源字节为114819072.这将在CAD模型上渲染912,120个面.
有什么建议?
我正在尝试执行立体相机校准,校正和视差图生成.它与正常的样本数据一起工作正常.但是,我正在尝试在iPhone 7+上使用具有不同变焦的双摄像头.与广角相机相比,长焦镜头具有2倍变焦.我通过算法运行图像,虽然错误率很高,但仍然很成功.然而,当我打开校正后的图像时,它们的边缘有一个奇怪的球形外观.中心看起来很好.我假设这是由于相机具有不同的缩放级别.我需要做些什么来解决这个问题?或者我只需要将任何输出裁剪到可用的未失真区域?这是我所看到的:
我尝试使用这些棋盘图像的校准结果来纠正某些物体的图像,并且整顿是关闭的,甚至没有关闭.如果我纠正我的一个棋盘图像,它们就会被发现.任何想法为什么会发生?
这些是我的输入图像看起来像导致球形外观输出图像.它们都是从完全相同的位置拍摄的,iPhone安装在三脚架上,我使用蓝牙设备触发快门,因此图像不会被震动,我的代码会自动拍摄每张镜头一张图像.我从不同角度拍摄了19张这样的图像,所有图像都显示了完整的棋盘格.放大的图像是整理到顶部球形图像的图像.
这是使用我得到的校准的视差图.
我试图弄清楚如何在调试时关闭 Xcode 中的反汇编视图。我想继续浏览我的代码,而不是分心地浏览所有汇编代码。我相信以前版本的 Xcode 的调试菜单下有一个选项,但我在 Xcode 4.5(最新版本)中找不到任何选项。有任何想法吗?
我仔细检查以确保我实际上是在我自己的代码中而不是在库中,并且当我在我自己的代码中时它仍然会这样做。这是发生的情况的图片:
这是通过创建一个新项目、创建一个虚拟函数、从 viewDidLoad 调用该虚拟函数、在函数调用上设置断点并使用 F6 单步执行来实现的。有任何想法吗?没有使用外部库。我确认发生这种情况时您提到的选项已关闭。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self initVals];
}
-(void)initVals
{
self.img = [[UIImageView alloc] init];
}
Run Code Online (Sandbox Code Playgroud) 出于某种原因,我的touchesBegan方法似乎没有正确响应.如果我用两根手指触摸屏幕,然后将其抬起并再次放下,触摸正确调用.如果我用一根手指触摸屏幕,然后添加第二根手指,touchesBegan就不会被调用.我需要检查一些标志吗?以下示例说明了我的问题:
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"touch");
}
Run Code Online (Sandbox Code Playgroud)
有什么想法发生了什么?如果重要的话,我正在使用iOS 4.2进行iPad测试.