标签: openscenegraph

程序员的3D建模

我正在学习计算机图形学作为我大学课程的一部分.该课程侧重于场景建模,而不是渲染或计算机图形的其他方面.我们正在学习它背后的数学和OpenSceneGraph实际运行的东西.

作为硬件的一部分,并且出于纯粹的兴趣,我需要创建一个3D模型,在这方面我有艺术自由.我也可以直接在代码中对其进行建模,或者在我选择的工具中加载模型.

问题是,我在视觉艺术方面不擅长 - 我有很多好主意,但不知道如何对它们进行建模.我也不能画画或画好.但是,我希望能够做CG.

您如何建议我进行3D建模?

谢谢,
阿萨夫

编辑:有些人投了这个票(没有发表评论).让我强调 - 我是一名程序员,我想熟悉与我们相邻的艺术.毫无疑问,这是一个与编程相关的问题.

编辑2:感谢所有回答的人.在我查看您建议的替代方案后,我会选择我接受的答案.我为(预期的)延迟道歉.

结论:

  • 我决定调查Blender.我正在研究Ruben Steins提到的一些视频教程.
    谢谢鲁本.
  • 我确实快速浏览了MilkShape 3D,如果我看到Blender对我的需求太多,或者我目前的学习"预算"(时间,注意力),我会使用它.
    谢谢m3rLinEz.
  • 在我学习了一些基本技能后,我打算遵循Mastermind的建议.
    谢谢Mastermind.
  • 当我做了一些3D艺术,并准备好提高我的技能时,我将去参观这些地方.已发布.
    谢谢你,fa.

感谢所有花时间回复的人,以及所有那些心胸开阔的人,不要低估编程,而不是代码,相关的问题.

3d graphics openscenegraph

31
推荐指数
3
解决办法
1万
查看次数

建议在Ogre,Irrlicht和OpenSceneGraph之间更好的C++ 3D引擎

我对3D图形非常熟悉(我为一个学术项目开发了一个简单的3D游戏引擎).但是现在我必须用C++开发一个音频/视频工具,里面还需要一些3D功能,所以我不能依赖我的小程序,但我需要一个具有高性能标准和功能的3d引擎框架.

我想知道您对这三种产品之间3D引擎的最佳选择的看法,我听说过:

  1. 怪物
  2. Irrlicht的
  3. OpenSceneGraph的

我需要的要求如下:

  1. 跨平台支持
  2. 高性能
  3. 支持视频编解码器
  4. 许可证(可能选择发布使用所选框架编写的产品的开源和闭源版本)
  5. 可用的图形效果的质量和数量

回答请记住,我不是在开发视频游戏,而我对最佳框架的选择并不取决于难以使用的程度.我只对框架提供的功能感兴趣.

我想更好地理解使用一个框架而不是另一个框架的差异和优点.

3d comparison irrlicht openscenegraph ogre

31
推荐指数
2
解决办法
2万
查看次数

如何从Android NDK获取资产中的文件

我正在尝试从本机端访问assets文件夹中的图像文件.现在我可以成功搜索assets文件夹及其子目录,找到我要查找的特定文件:

AAssetDir* assetDir = AAssetManager_openDir(asset_manager, "images");
const char* filename;
while ((filename = AAssetDir_getNextFileName(assetDir)) != NULL)
{
   __android_log_print(ANDROID_LOG_DEBUG, "Debug", filename);
}

AAssetDir_close(assetDir);
Run Code Online (Sandbox Code Playgroud)

我也在使用OSG.我使用以下代码将图像设置为我的着色器的纹理:

texture->setImage(osgDB::readImageFile(fileNameWithPath));
Run Code Online (Sandbox Code Playgroud)

但是该文件名必须包含绝对路径,因为它不在同一目录中.但是我发现我无法获得资产目录的绝对路径,因为它与APK一起被压缩.

由于我无法访问绝对路径,我可以使用其他方式来获取图像?另外需要注意的是,我确实希望将资产文件夹中的文件保存为sd卡.

android openscenegraph android-ndk

26
推荐指数
1
解决办法
4万
查看次数

将OpenSceneGraph与Qt集成

我在Qt上用OpenGL搞砸了.但现在我想拥有复杂的场景.(加载了多个COLLADA/MD2型号).

为此,我正在考虑使用OpenSceneGraph(OSG).是否可以将OSG与Qt集成?如果是这样怎么样?

谢谢.

opengl qt openscenegraph scenegraph

15
推荐指数
2
解决办法
8209
查看次数

在多线程C++应用程序中,我是否需要一个互斥锁来保护一个简单的布尔值?

我有一个多线程C++应用程序,它使用OpenSceneGraph库进行3D渲染.我打算使用boost :: threads将OSG的渲染循环作为一个单独的线程,将包含共享状态的数据结构传递给线程.我试图避免任何太重量级(如互斥量)的同步,因为渲染循环需要非常紧,OSG本身试图避免必须锁定.大多数共享状态在线程启动之前设置,并且从不更改.我确实有一些需要更改的数据,我计划双重缓冲.但是,我有一个简单的布尔值来表示线程暂停渲染,然后恢复渲染,另一个杀死它.在这两种情况下,app线程都会设置bool,而渲染线程只会读取它.我是否需要同步访问这些bool?据我所知,可能发生的最糟糕的事情是渲染循环在暂停或退出之前继续进行额外的帧.

c++ multithreading mutex boolean openscenegraph

14
推荐指数
2
解决办法
9412
查看次数

VS2012 MSVCR120D.dll丢失

我正在尝试在VS2012中设置我的项目,以成功编译并运行OSG代码进行调试.我也在使用OSG调试库.编译和链接成功结束但在运行二进制文件后,我收到一条错误消息,说明MSVCR120D.dll缺少.

我一整天都在寻找这个错误的解决方案,这对我来说没有意义,因为我正在使用应该使用的VS2012 MSVCR110D.dll.我也没有这个dll C:\Windows\System32,只有MSVCR120.dll它的旧版本.

如果我尝试使用非调试的 osg库在发布模式下编译项目,一切都很好,我可以正常运行项目而不会出错.

参考这个问题,我试图使用MFCRuntime Library设置,但只有发布库工作.

我需要使用调试库运行它,因为我想使用不适用于发行库的Visual Leak Detector.这是我正在使用的代码的一部分(OSG库使用相同的VS2012编译).

#include "stdafx.h"
#include <windows.h>

// osg libs
#include <osgViewer/Viewer>

int main(int argc, char **argv) {
  osgViewer::Viewer viewer;
  while (!viewer.done()) {
    viewer.frame();
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

以下是导致错误的项目设置的屏幕截图:

项目 C/C++代码生成子菜单的常规设置

c++ dll openscenegraph visual-studio-2012

13
推荐指数
1
解决办法
5万
查看次数

在OpenSceneGraph中创建一个Sphere(使用osg :: Geometry)

我花了很长时间才使这个工作,但我的Sphere不会显示.
使用以下代码来实现我的功能:
使用Visual C++在Opengl中创建3D球体

其余的是OSGosg :: Geometry.
(注意:不是ShapeDrawable,因为您无法使用它实现自定义形状.)
将顶点,法线,texcoords添加到VecArrays中.

首先,我怀疑行为不端,因为我保存的物品是半空的.
有没有办法将现有描述转换为OSG?
原因?我想了解如何在以后创建对象.
事实上,它与后来的任务有关,但目前我只是预先准备.

旁注:因为我必须没有索引,所以我把它们排除了.
但是没有它们,我的圆筒显示得很好.

c++ opengl openscenegraph

12
推荐指数
1
解决办法
4650
查看次数

解决错误MSB8011:无法注册输出

一个奇怪的错误:

错误MSB8011:无法注册输出.请尝试启用每用户重定向或使用提升的权限从命令提示符注册该组件.C:\ Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets 744

尝试在ActiveX控件中使用OpenSceneGraph(OSG)时出现此错误.谷歌搜索显示各种解决方案并没有真正解决问题或找到错误的确切原因,所以我想把解决方案放在一个地方:这里.

我找到了它的解决方案,并将很快回答我自己的问题,以便人们可以找到他们遇到相同问题的解决方案.

activex openscenegraph visual-studio-2010

11
推荐指数
3
解决办法
3万
查看次数

让Xcode识别没有'.h'扩展名的C++头文件(OpenSceneGraph)

OpenSceneGraph使用没有'.h'扩展名的头文件.有没有办法让Xcode将语法识别为C++,从而允许我突出显示并跳转到定​​义等?

例如:没有突出显示:

在此输入图像描述

c++ xcode file-extension header-files openscenegraph

9
推荐指数
1
解决办法
3730
查看次数

我怎样才能找到扭曲场景中对象的OpenGL调用?

我正在混合两个使用OpenGL的库:Qt和OpenSceneGraph.我的目标是OpenGL ES 2,所以一切都是通过着色器和ES 2兼容调用完成的.

我通过尝试将OSG绘制到QDeclarativeItem上来专门使用OSG和QtDeclarative.我按照Qt文档中建议的方式执行此操作:在beginNativePainting()/ endNativePainting()之间包装所有OpenGL调用.

这工作正常,直到我在OpenSceneGraph场景中使用纹理.当我这样做时,由于缺少更好的单词,我的QML窗口变得"混乱".为了使其尽可能简单,我的OSG场景包含一个应用了纹理的平面.我使用基本的OpenGL调用重新创建了场景,不再出现问题.这里的问题总结为一堆图片:

  • QtDeclarative引擎使用OpenGL绘制内容.我设置了一个简单的QML页面:

在此输入图像描述

  • 我直接使用OpenGL创建一个简单的场景.它是一个涂有纹理的平面.

在此输入图像描述

  • 现在我尝试在OSG中设置相同的场景......相同的着色器等.

在此输入图像描述

你可以看到最后一个截图发生了奇怪的事情.不要担心原始OpenGL场景透明的黑色背景,这只是使用黑色清晰颜色的OSG.问题是用QML(矩形)设置的其他项目搞砸了.

编辑:澄清会发生什么:我用QML绘制的矩形都伸展到屏幕的右边缘.我还注意到,如果我在QML中的OpenSceneGraph项目之后绘制矩形,它们就不会出现(之前我没有注意到).我在以下屏幕截图中的OSG项目之后绘制紫色黑色矩形...请注意它会消失.可能会发生更多奇怪的事情,但这是我观察到的所有矩形播放.

之前 在此输入图像描述

在此输入图像描述

我是OpenGL的新手,所以我不知道什么样的调用/状态设置会导致这样的事情发生.我认为OpenSceneGraph会使一些OpenGL状态发生变化,这会搞砸Qt的绘图引擎.我也知道这只会在OSG使用纹理时发生...如果我在OSG场景中不应用纹理,则不会发生这种情况.这就是我被困住的地方.

此外,我尝试使用BuGLe在OSG中启用和不启用纹理的OpenGL调用跟踪,以查看是否可以找出有问题的状态更改.我发现了一些差异,甚至一些全局状态OSG改变了(例如glPixelStorei())两者之间,但重置我发现的变化没有区别.如果我知道要寻找什么,这将有很大帮助.如果有人感到疯狂,我也有堆栈痕迹:

编辑2: 这是一个可能有用的差异.在相关线条明显之前,您需要向下滚动. http://www.mergely.com/nUEePufa/

编辑3: 哇!好吧,那差异对我有所帮助.OSG启用VertexAttribArray 3但不禁用它.在OSG渲染其帧之后调用glDisableVertexAttribArray(3)似乎可以部分解决问题; 没有更多的QML矩形拉伸.但是,OSG项目后绘制的矩形仍未显示.

qt opengl-es openscenegraph qml

7
推荐指数
1
解决办法
1188
查看次数