【发布时间】:2010-05-03 20:02:13
【问题描述】:
我正在寻找一个应用程序,它能够在空间中加载一堆点、渲染它们并能够进行简单的 3D 操作(选择这样的点、旋转和移动视口)。
源必须可用,因为我想将它用作我自己的应用程序的基础。
【问题讨论】:
我正在寻找一个应用程序,它能够在空间中加载一堆点、渲染它们并能够进行简单的 3D 操作(选择这样的点、旋转和移动视口)。
源必须可用,因为我想将它用作我自己的应用程序的基础。
【问题讨论】:
有几个开源 3D 编辑器,但您会发现它们中的大多数都与特定的 3D 引擎相关联(即 irrEdit => Irrlicht)。
有 Blender,但我怀疑它太复杂了,无法找到您想要的代码。
在几分钟的谷歌搜索中,我无法找到包含源代码的 3D 编辑器的简单示例,但我找到了这个,它可能有用:
【讨论】:
有http://Clara.io,源不可用,但它是免费的,您可以轻松编写插件以自定义格式导入/导出,还可以在场景中添加自己的对象。
【讨论】:
您可以使用directX 来解决这个问题。我使用 delphi 和 directX 完成了这项工作。 您也可以使用 c# 来实现它。
它可以在空间中加载一堆点
您可以根据需要读取文本文件或二进制文件并将其存储在缓冲区中。
TD3DXVector3 temppt = D3DXVector3(X,Y,Z);
这里,TD3DXVector3 是directX 的类型。
渲染它们
对于渲染,IDirect3DDevice9 有一个方法DrawPrimitive,你可以使用它来渲染点、线或三角形。
g_pd3dDevice.DrawPrimitive(D3DPT_TRIANGLELIST,0,count);
这里,Count 是您要绘制的三角形的数量。
选择这样的点,旋转和移动视口
对于旋转和移动视口,您可以使用变换矩阵进行投影变换、视图变换和世界变换。
【讨论】:
Allegro 库除了只有 2d 之外更易于使用,但可能有 DirectX 的 3d 接口。你需要了解 C++。下面是随机像素的初始化文件:
您可以从 allegro.cc 获取库并使用 Visual Studio 进行编译。
编辑: 这是一个 allegroGL 示例。它的 allegro 与 openGL 相结合。 http://www.allegro.cc/forums/thread/589211
#include <conio.h>
#include <stdlib.h>
#include "allegro.h"
int main()
{
int x,y,x1,y1,x2,y2;
int red, green, blue, color;
allegro_init();
install_keyboard();
srand(time(NULL));
int ret = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640,480,0,0);
if (ret != 0)
{
allegro_message(allegro_error);
return 0;
}
//textprintf(screen, font, 0,0,15,"Pixels program - %dx%d - press esc to quit", SCREEN_W, SCREEN_H);
while(!key[KEY_ESC])
{
x = 10+rand()%(SCREEN_W - 20);
y = 10+rand()%(SCREEN_H - 20);
red = rand() % 255;
green = rand() % 255;
blue = rand() % 255;
color = makecol(red,green,blue);
putpixel(screen,x,y,color);
}
allegro_exit();
}
END_OF_MAIN();
【讨论】: