关于打开3D动态图像 Topic is solved

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
ba9el
In need of some credit
In need of some credit
Posts: 6
Joined: Sun Mar 31, 2013 12:04 pm

关于打开3D动态图像

Post by ba9el »

大家好。我是新来的。请多多关照和指教=)
然后最近接触wxwidgets不是很久。

然后我做的这个项目有一个要求是需要按钮打开一个3D图像文件。这个文件是后缀dat。然后我电脑里是用LDview这个软件打开的。打开之后是可以拖拽动态查看的3D图像。

但是我不知道wxwidgets应该怎么样做到。看了一下wximage应该是不行的。

请大神指教!!谢谢!! :D 感激不尽
ba9el
In need of some credit
In need of some credit
Posts: 6
Joined: Sun Mar 31, 2013 12:04 pm

Re: 关于打开3D动态图像

Post by ba9el »

昨天试了一下wxMediaCtrl。感觉不行= =。。

贴下实现的方法。在附件里。。
onButton3Dview 是用wxEVT_COMMAND_BUTTON_CLICKED链接。
测试过只能显示 新建的框架(wxframe)而没有能打开图片。。不知道是代码有问题还是需要别的方法。
Attachments
代码
代码
question.png (25.97 KiB) Viewed 12466 times
ba9el
In need of some credit
In need of some credit
Posts: 6
Joined: Sun Mar 31, 2013 12:04 pm

Re: 关于打开3D动态图像

Post by ba9el »

大家都没有想说的嘛。。是不是太基础的问题都不屑回答啊?请大家多多指教啊TAT

还是觉得问题没有说明白?
我都在的。不明白我可以详细说的。
fancyivan
Experienced Solver
Experienced Solver
Posts: 80
Joined: Wed May 26, 2010 8:42 am
Location: Beijing, China
Contact:

Re: 关于打开3D动态图像

Post by fancyivan »

搜索了一下:
LDView is a 3D viewer for LDraw LEGO models with a focus on quality rendering with good performance. It also contains many features geared specifically toward LDraw part authoring.

LDView is a real-time 3D viewer for displaying LDraw models using hardware-accellerated 3D graphics. It was written using OpenGL, so should be accellerated on any video card which provides full OpenGL 3D accelleration (so-called mini-drivers are not likely to work). It should also work on other video cards using OpenGL software rendering, albeit at a much slower speed.

所以,你的dat文件是供LDView使用的专用文件,不是一段录像,也不是一个图片。
如果你能查到这个文件的文件是如何组织的,你可以在wxWidgets里自己用OpenGL写一个能解析该文件的程序就可以。
简单来说,就是你需要使用wxWidgets来自己开发一个与LDView类似的软件。
OS: Win7 Ultimate SP1 x64(Windows XP Pro SP3 in VirtualBox)
Compiler: MinGW32 (gcc4.8.1 + gdb7.6.1)
IDE: Code::Blocks 12.11
Lib: wxWidgets3.0.0
fancyivan
Experienced Solver
Experienced Solver
Posts: 80
Joined: Wed May 26, 2010 8:42 am
Location: Beijing, China
Contact:

Re: 关于打开3D动态图像

Post by fancyivan »

呃,没仔细看你的图片,你好像是想直接调用一下LDView软件来打开你的文件。

1.试试在命令行方式下能不能通过传递文件参数来直接打开文件,比如:
c:\......>LDView.exe "d:\xx.dat" 之类的
2.使用wxExecute,示例:

//异步执行程序默认行为函数将会立即返回
wxExecute(wxT("c:\\windows\\notepad.exe"));
//同步执行程序函数在,程序退出以后才会返回Notepad
wxExecute(wxT("c:\\windows\\notepad.exec:\\temp\\temp.txt"), wxEXECSYNC);
ba9el wrote:昨天试了一下wxMediaCtrl。感觉不行= =。。

贴下实现的方法。在附件里。。
onButton3Dview 是用wxEVT_COMMAND_BUTTON_CLICKED链接。
测试过只能显示 新建的框架(wxframe)而没有能打开图片。。不知道是代码有问题还是需要别的方法。
OS: Win7 Ultimate SP1 x64(Windows XP Pro SP3 in VirtualBox)
Compiler: MinGW32 (gcc4.8.1 + gdb7.6.1)
IDE: Code::Blocks 12.11
Lib: wxWidgets3.0.0
ba9el
In need of some credit
In need of some credit
Posts: 6
Joined: Sun Mar 31, 2013 12:04 pm

Re: 关于打开3D动态图像

Post by ba9el »

恩是的。我比较想调用Ldview来打开。就像双击电脑图片它会让你选择打开格式那样子。
所以我先想到了用media来打开。wxMediaCtrl这个类里所可以让用户用本地默认打开方式打开。但是没能成功。我还要去改下代码。

你说的上面那个方法我觉得可能是我没办法才会选择的。听起来有点难=。=我也没有用过openGL。

这个execute的方法我会试一下!!!~~谢谢提点~~。 不过就看你给的示例我感觉是不是直接打开的是程序。然后在程序(比如LDview)里选择打开我要的目标文件?
这样的话可能有点不方便。但是我会先去看下wxExecute试过再说!~~谢谢~~
fancyivan wrote:呃,没仔细看你的图片,你好像是想直接调用一下LDView软件来打开你的文件。

1.试试在命令行方式下能不能通过传递文件参数来直接打开文件,比如:
c:\......>LDView.exe "d:\xx.dat" 之类的
2.使用wxExecute,示例:

//异步执行程序默认行为函数将会立即返回
wxExecute(wxT("c:\\windows\\notepad.exe"));
//同步执行程序函数在,程序退出以后才会返回Notepad
wxExecute(wxT("c:\\windows\\notepad.exec:\\temp\\temp.txt"), wxEXECSYNC);
fancyivan
Experienced Solver
Experienced Solver
Posts: 80
Joined: Wed May 26, 2010 8:42 am
Location: Beijing, China
Contact:

Re: 关于打开3D动态图像

Post by fancyivan »

wxMediaCtrl is a class for displaying types of media, such as videos, audio files, natively through native codecs.
这好像是跟多媒体有关的类,我真没用过该类。但感觉上好象和你的需求没啥关系。
ba9el wrote:恩是的。我比较想调用Ldview来打开。就像双击电脑图片它会让你选择打开格式那样子。
所以我先想到了用media来打开。wxMediaCtrl这个类里所可以让用户用本地默认打开方式打开。但是没能成功。我还要去改下代码。

你说的上面那个方法我觉得可能是我没办法才会选择的。听起来有点难=。=我也没有用过openGL。

这个execute的方法我会试一下!!!~~谢谢提点~~。 不过就看你给的示例我感觉是不是直接打开的是程序。然后在程序(比如LDview)里选择打开我要的目标文件?
这样的话可能有点不方便。但是我会先去看下wxExecute试过再说!~~谢谢~~
fancyivan wrote:呃,没仔细看你的图片,你好像是想直接调用一下LDView软件来打开你的文件。

1.试试在命令行方式下能不能通过传递文件参数来直接打开文件,比如:
c:\......>LDView.exe "d:\xx.dat" 之类的
2.使用wxExecute,示例:

//异步执行程序默认行为函数将会立即返回
wxExecute(wxT("c:\\windows\\notepad.exe"));
//同步执行程序函数在,程序退出以后才会返回Notepad
wxExecute(wxT("c:\\windows\\notepad.exec:\\temp\\temp.txt"), wxEXECSYNC);
OS: Win7 Ultimate SP1 x64(Windows XP Pro SP3 in VirtualBox)
Compiler: MinGW32 (gcc4.8.1 + gdb7.6.1)
IDE: Code::Blocks 12.11
Lib: wxWidgets3.0.0
ba9el
In need of some credit
In need of some credit
Posts: 6
Joined: Sun Mar 31, 2013 12:04 pm

Re: 关于打开3D动态图像

Post by ba9el »

"Depending upon the backend, wxMediaCtrl can render and display pretty much any kind of media that the native system can - such as an image, mpeg video, or mp3"
其实主要是看到这句话才觉得可以一试=。=
fancyivan wrote:wxMediaCtrl is a class for displaying types of media, such as videos, audio files, natively through native codecs.
这好像是跟多媒体有关的类,我真没用过该类。但感觉上好象和你的需求没啥关系。
ba9el wrote:恩是的。我比较想调用Ldview来打开。就像双击电脑图片它会让你选择打开格式那样子。
所以我先想到了用media来打开。wxMediaCtrl这个类里所可以让用户用本地默认打开方式打开。但是没能成功。我还要去改下代码。

你说的上面那个方法我觉得可能是我没办法才会选择的。听起来有点难=。=我也没有用过openGL。

这个execute的方法我会试一下!!!~~谢谢提点~~。 不过就看你给的示例我感觉是不是直接打开的是程序。然后在程序(比如LDview)里选择打开我要的目标文件?
这样的话可能有点不方便。但是我会先去看下wxExecute试过再说!~~谢谢~~
fancyivan wrote:呃,没仔细看你的图片,你好像是想直接调用一下LDView软件来打开你的文件。

1.试试在命令行方式下能不能通过传递文件参数来直接打开文件,比如:
c:\......>LDView.exe "d:\xx.dat" 之类的
2.使用wxExecute,示例:

//异步执行程序默认行为函数将会立即返回
wxExecute(wxT("c:\\windows\\notepad.exe"));
//同步执行程序函数在,程序退出以后才会返回Notepad
wxExecute(wxT("c:\\windows\\notepad.exec:\\temp\\temp.txt"), wxEXECSYNC);
ba9el
In need of some credit
In need of some credit
Posts: 6
Joined: Sun Mar 31, 2013 12:04 pm

Re: 关于打开3D动态图像

Post by ba9el »

之前在忙其他的编程部分。。
今天试了一下好了。。。好简单TAT 谢谢~~!!~~~~~~
fancyivan wrote:呃,没仔细看你的图片,你好像是想直接调用一下LDView软件来打开你的文件。

1.试试在命令行方式下能不能通过传递文件参数来直接打开文件,比如:
c:\......>LDView.exe "d:\xx.dat" 之类的
2.使用wxExecute,示例:

//异步执行程序默认行为函数将会立即返回
wxExecute(wxT("c:\\windows\\notepad.exe"));
//同步执行程序函数在,程序退出以后才会返回Notepad
wxExecute(wxT("c:\\windows\\notepad.exec:\\temp\\temp.txt"), wxEXECSYNC);
Post Reply