Ogre
https://www.ogre3d.org/
OGRE Dependencies依赖库源码:
https://bitbucket.org/cabalistic/ogredeps/downloads/
OGRECave
https://github.com/OGRECave
blender2ogre
https://github.com/OGRECave/blender2ogre
meshmagick
https://github.com/OGRECave/meshmagick
Cmake
https://cmake.org/download/
FTP站 Index of /binaries/win32/dependencies/
https://download.gnome.org/binaries/win32/dependencies/
FTP站 Index of /binaries/win32/glib/2.28/
https://download-fallback.gnome.org/binaries/win32/glib/2.28/
Tundra2
https://github.com/etradewind/Tundra2
Ogre Meshy
https://wiki.ogre3d.org/Ogre+Meshy
ImageMagick
https://imagemagick.org/
Orge SDK
https://wiki.ogre3d.org/Installing+the+Ogre+SDK
DirectX End-User Runtimes (June 2010)
https://www.microsoft.com/en-au/download/details.aspx?id=8109
DirectX End-User Runtime Web Installer
https://www.microsoft.com/en-us/download/details.aspx?id=35

从网上下载下来的模型文件大部分是 FBK 格式,需要通过建模软件将 FBK 文件解析导出 Mesh 文件和 Texture 文件(编辑器目前还不支持材质球,所以 Texture 要是一张图)

以 Blender 为例,需要使用插件 blender2ogre

官方文档:“Copy the io_ogre folder into the $BLENDER_DIR/scripts/addons folder”。

即把 io_ogre 文件夹放到 Blender 安装路径/scripts/addons。然后要在 io_ogre/config.py 中配置这个插件要用到的 ogre 的 sdk 的路径。其实在 Blender 的用户偏好里面设置一样的。
我在 SDK 里面没找到 meshmagick.exe,只能在 github 上找到未编译的版本的,但是这个插件又需要它的可执行文件,所以只能自己用 cmake 编译了
第一次使用 cmake 编译的时候,可能会被报错:Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) ,那就代表你还要配置一个 PkgConfig,流程如下

转到 https://download.gnome.org/binaries/win32/dependencies/
下载文件 pkg-config_0.26-1_win32.zip
将文件 bin / pkg-config.exe 解压缩到 MinGW根目录 \ bin
下载文件 gettext-runtime_0.18.1.1-2_win32.zip
将文件 bin / intl.dll 提取到 MinGW根目录 \ bin
转到 http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28
下载文件 glib_2.28.8-1_win32.zip
将文件 bin / libglib-2.0-0.dll 解压缩到 MinGW根目录 \ bin

再使用 cmake 编译的时候,又可能会报错

CMake Error at CMakeLists.txt:20 (find_package): By not providing
“FindOGRE.cmake” in CMAKE_MODULE_PATH this project has asked CMake
to find a package configuration file provided by “OGRE”, but CMake
did not find one.

Could not find a package configuration file provided by “OGRE” with
any of the following names:

OGREConfig.cmake
ogre-config.cmake

Add the installation prefix of “OGRE” to CMAKE_PREFIX_PATH or set
“OGRE_DIR” to a directory containing one of the above files. If
“OGRE” provides a separate development package or SDK, be sure it
has been installed.

这个时候可以看到 Cmake 的 GUI 中间的 Name-Value 表中有一个 OGRE_DIR 的 name 是找不到值的,就是说我电脑里没 Ogre,还要自己编译 Ogre 的源码.
上网查了,安装ogre引擎,配置开发环境以进行OGRE开发有两种方式,一是下载Ogre源码,然后编译,一是下载SDK,直接安装。我这里就是要编译源码
使用 Cmake 编译 Ogre 的源码时要连外网,因为 Cmake 会从国外下载 Ogre 的依赖库
以 GUI 启动的 Cmake 编译源码流程:选择源码文件夹 -> 选择生成项目文件夹 -> 点击 Configure -> 点击 Generate -> 点击 Open Project (打开了生成的 sln 文件)->在vs里面生成可执行文件
关于生成的文件都是什么东西,我又查到:

bin目录下存放的是二进制文件,分Debug和Release。Debug是调试版本,Release是发布版本。
boost是C++标准库的扩展,它是基于模板template的。
CMake是跨平台的安装(编译)工具。
Docs是OGRE的相关文档,帮助手册。
License.html是许可证授权信息,OGRE使用MIT许可证。
ChangeLog.html里记录的是开发改变日志。
Docs\api\index.html是OGRE的API手册
include是头文件目录
lib是静态链接库目录,包括Debug版和Release版
media是OGRE例子使用的资源
Samples目录里是演示例子的源代码
OGRE.sln是解决方案文件,它包含一个或多个项目文件(.vcproj)
OGRE.ncb是无编译预览文件,.ncb文件是VC++自动创建的跟踪文件。当自动完成出问题时可以删除此文件。重新编译会自动生成
ALL_BUILD.vcproj是项目文件,它包含了所有的OGRE例子
CMake_install.cmake与CMakeLists.txt是使用CMake进行编译的相关文件

对于这次编译 Ogre,第一次编译后 Name-Value 表会是红的,这个时候如果不报错,其实你可以继续点击 Configure,再生成一次,表就正常了,这个时候继续按流程来,直到在 vs 打开了生成的 sln 文件,切换成 Release 模式,先生成 CMakePredefinedTargets.ALL_BUILD,它是解决方案目录的第一个项目,然后再生成 CMakePredefinedTargets.INSTALL,它是解决方案目录的第二个项目。最后生成并调试 SampleBrowser,它是解决方案目录的最后一个项目。

我在最后生成并调试 SampleBrowser 的时候又遇到了一个报错:

Ogre:itemidentityException::ItemIdentityException: Cannot find an
ArchiveFactory for type ‘zip’ in Ogre.ArchiveManager::load at
D:\ogre-1.12.12\OgreMain\src\OgreArchiveManager.cpp (line 61)

感觉像是缺少依赖库的感觉,但是他不是说 cmake 会自动给我下载吗……?
去论坛上搜,看到一个十几年前的帖子,有一个人的回答是贴主可能缺少 libzzip-dev,我上网搜了 libzzip-dev 之后发现这个是用在 ubuntu 里面的……?这个暂且搁置。
下一个贴,时间虽然相差了三年不过比那些相差十几年的来说还是可以接受
https://forums.ogre3d.org/viewtopic.php?t=94241
贴主前面说他以前装过 Ogre 然后说了一堆 debug 版本和 release 版本啥的,因为我其实并不知道这样个版本的区别,但是网上的教程都说使用 release 版本,所以我就暂且搁置他前面说的话。贴主后面说,“the dependencies had zlib.dll as well as the lib”,我看了我的 dependencies 文件夹,确实我也有。
贴主说他换了新的 zlib.lib 也一样报错,那么怎么获得“新的”zlib.lib 呢?这个也暂且搁置。他说看了debugger之后是

case Exception::ERR_INTERNAL_ERROR: throw
InternalErrorException(number, desc, src, file, line);

number=7 desc = “media/packs/OgreCore.zip - error whilst opening
archive: Unable to read zip file.” src = “ZipArchive::checkZzipError”
line = 338

然后回复说是 OgreCore.zip 在最近的版本已经被移除了,我看了我的 media 文件夹,嗯,确实
好吧,看到后面这个帖子突然中止,贴主最后还是没有解决这个问题
下一个帖子说,看看 cmake 里面有没有 zziplib ,我搜了一下,我没有……呃……

最后还是下载了一个 2020 年的 OGRE ,编译没问题,生成,第一次生成的时候有几个报错:

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK1181 无法打开输入文件“…\lib\Release\OgreGLSupport.lib” RenderSystem_GL D:\Tools\ogre-1.11.6\RenderSystems\GL\LINK 1

但是后来我再生成一次又没有这个错了,没问题了
调试 SampleBrowser,也没问题,哦吼!
然后再回到 Blender,用户偏好,重新设置,OgreXMLConverter.exe 和 OgreMeshUpgrader.exe 都在 软件根目录\sdk\bin\ (居然不是在 软件根目录\Tools,天哪这是怎么想的)MeshMagick.exe 还是没有,还是要自己编译
编译 MeshMagick 的时候出现问题 OGRE_DIR 找不到了,但是我已经装了 OGRE。然后去论坛搜
https://forums.ogre3d.org/viewtopic.php?t=94823
这个帖子里面提到 set(OGRE_DIR [PATH TO THE SDK’S CMAKE FOLDER]),而我只试过把 OGRE_DIR 设置为 OGRE软件根目录 或者 软件根目录\bin。设置为 软件根目录/sdk/CMake,再 Configure 一次确实可以了。
然而又报错 DirectX_DIR 没找到,查了一下是需要 DirectX 的 SDK,但是根据微软官方
https://www.microsoft.com/en-us/download/details.aspx?id=6812
说是 win7 以上的 DirectX SDK 搬到了 Windows SDK 中, Windows SDK 的使用方法如下
https://devblogs.microsoft.com/cppblog/developing-for-windows-10-with-visual-c-2015/
看了一下,又要安装什么东西……那我还是搁置一下,我直接 Generate!
生成 INSTALL 报错:

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB3073 命令“setlocal
D:\Tools\cmake-3.21.0-windows-x86_64\bin\cmake.exe -DBUILD_TYPE=Debug
-P cmake_install.cmake if %errorlevel% neq 0 goto :cmEnd :cmEnd endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel exit /b %1 :cmDone if %errorlevel% neq 0 goto :VCEnd
:VCEnd”已退出,代码为1。
INSTALL D:\Tools\VisualStudio\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets 155

查了是要用管理员权限启动 CMake,这下没问题了
之后是 Tundra2,下载好了
之后是 Ogre Meshy,编译的时候报错

CMake Error at CMakeLists.txt:64 (file): file COPY cannot find
“D:/Documents/OgreMeshy.1.6.src/Dependencies/Ogre/Samples/Media/RTShaderLib”:
No such file or directory. Call Stack (most recent call first):
CMakeLists.txt:72 (copy_resources)

CMake Error at CMakeLists.txt:64 (file): file COPY cannot find
“D:/Documents/OgreMeshy.1.6.src/Dependencies/Ogre/Samples/Media/RTShaderLib”:
No such file or directory. Call Stack (most recent call first):
CMakeLists.txt:73 (copy_resources)

CMake Error at CMakeLists.txt:64 (file): file COPY cannot find
“D:/Documents/OgreMeshy.1.6.src/Dependencies/Ogre/Samples/Media/RTShaderLib”:
No such file or directory. Call Stack (most recent call first):
CMakeLists.txt:74 (copy_resources)

CMake Error at CMakeLists.txt:64 (file): file COPY cannot find
“D:/Documents/OgreMeshy.1.6.src/Dependencies/Ogre/Samples/Media/RTShaderLib”:
No such file or directory. Call Stack (most recent call first):
CMakeLists.txt:75 (copy_resources)

这分明是源码自己缺少了文件把!没办法,只能用他的win32的Binaries:版了
下一个,\ImageMagick\convert.exe,Ogre 没有 ImageMagick,得下载
再接下来的两个都是在 Tundra2安装根目录\bin 下面
ok!用户偏好的配置完成!

接下来在 Blender 中导出成 Ogre3D 的格式,太棒了又报了一个错

[Warning] No materials, not writing .matreial script … Report:
ERRORS:
- Cannot find suitable OgreXMLConverter or OgreMeshTool executable. Export XML mesh - do NOT automatically convert .xml to .mesh file. You
MUST run converter mesh manually …

如果是 OgreXMLConverter or OgreMeshTool 的锅的话,那就是我直接用 Ogre安装根目录\SDK 文件夹里面的工具有问题。然后我就想到 Tools 文件夹下面也有同名的CMake文件夹嘛,我就还以为是要用这个编译之后在用,试着用了一下 Cmake 编译 Tools 文件夹里面的 cmake 文件,不行,那就真的只能用 sdk 文件夹里面的了,那可能就是我的 Ogre 的版本的问题了,然后我就用了最新版本的 Ogre SDK 里面的

看错误日志是我没有正确生成 OgreXMLConverter,那就说明这一步操作是识别到的我的 OgreXMLConverter.exe 的!所以大概率就是因为版本问题才识别不到我之前的 OgreXMLConverter.exe
那接下来就生成最新版本的 OgreXMLConverter!
兴致冲冲去编译,结果发现下过来的源码文件夹被 Cmake 认为是无效路径

上网搜了一个安装 Ogre SDK 的教程,说是先编译 Ogredeps 再把编译出来的放到 Ogre SDK 的源码文件夹下面再编译 Ogre SDK,我也照做了,没想到刚编译 Ogredeps 就有问题

上论坛搜了 blender2ogre non- zero status converting mesh 这种关键词,也没有什么看上去合理的解决方案
那就还是要研究一下怎么编译 Ogre SDK 了。
然后搜到了 wiki 里面还有一个安装指引,我还以为只有官网的 download 那里才有关于sdk的东西
https://wiki.ogre3d.org/Installing+the+Ogre+SDK
但是看了一下,他这个应该也是十年前的帖子了,只是告诉你创建一个环境变量而已,不是我想要的编译。我顺手也给建了,对于编译 Ogredeps 没用

那就还是要考虑 Ogredeps 的编译问题
去论坛查了关于 Ogredeps 的问题,一个是惨到没有回复,一个是 build 过程中被中断导致问题,一个是编译时 OIS.DLL link error 跟我的不一样
我再仔细看我的Cmake的报错是我没有 DirectX,我还是没理解我都已经是DirectX 12了,怎么有问题,难道是他也需要一个低版本的 DirectX?

Looking for DirectX… Could not locate DirectX CMake Error at
cmake/FindPkgMacros.cmake:117 (message): Required library DirectX not
found! Install the library (including dev packages) and try again. If
the library is already installed, set the missing variables manually
in cmake. Call Stack (most recent call first):
cmake/FindDirectX.cmake:72 (findpkg_finish) CMakeLists.txt:13
(find_package)

搜了一下,不同版本的 DirectX 是可以共存的,那我就去下载了一个 2010 年的呗
因为你可以看到下载下来的是一堆 cab 文件,我就去搜这是什么意思嘛
https://superuser.com/questions/979687/how-can-i-install-directx9-on-windows-10
在这个询问 win10 上是否能下载 DirectX9 的帖子里,第一个回答是根据游戏提示的缺少的 dll 的名字中的编号解压对应编号的 cab 文件,虽然Cmake不会提示我少哪个dll,不过这也说明我要是实在不行就把他们全部解压了。第二个回答是不能手动下载 DirectX9,win10已经适配了 DirectX 9, 10 and 11,只是老软件以错误的方式尝试获取 DirectX 所以才会报错。ok这也无助于我编译。第三个回答是说, DirectX 9.0c End-User Runtime 是适配 Windows 2000 to XP SP1 的,可以下载 DirectX End-User Runtime Web Installer,我下了之后理所当然地提示我我电脑里已经装了 DirectX 了


所以到底为什么 Cmake 找不到 DirectX 呢?很奇怪了
之后还可以继续找,比如看这个,不过实在是不能再浪费时间了,这次尝试就到此结束了
https://stackoverflow.com/questions/64789975/finding-directx12-libraries-with-cmake-and-mingw

一次通过Blender2Ogre将FBK转为Mesh的失败尝试相关推荐

  1. 华为云创建免费服务器的一次失败尝试

    华为云注册用户提供了一些免费套餐,今天进行一下初探. 在中国境内打开华为云服务映入眼帘的是下面这个界面. 请注意,切换区域. 这时才能看到免费的套餐 看了免费套餐的样子是不是有点惊喜,点击体验之后. ...

  2. 使用 Parallel HTTP Request 根据配置文件动态发送多个 HTTP 请求的失败尝试

    我新建了一个 Parallel HTTP requests,里面包含了两个 url: 在 table view result 里,该 sample 只包含一条结果记录. 如果想看明细数据,需要在 tr ...

  3. 关于 TypeScript 内 constructor signature 的一些失败尝试

    interface ArrayContaining {//new (sample: any[]): any;jasmineToString(): string;}class Jerry{jasmine ...

  4. Jerry本地安装SAP Kyma的一些失败尝试

    Jerry Installation homebrew uninstall: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercon ...

  5. 记一次FFMPEG转avi视频保存到ftp服务器的失败尝试

    项目中有一需求,将存储在硬盘上的h264码流转成Avi文件,并上传到FTP服务器.首先想到是用ffmpeg将h264转换成avi格式的文件,保存到本地磁盘,一切正常,很快完成了. 正当以为结束时,突然 ...

  6. 安装Linux时grub2安装失败,尝试安装Ubuntu作为计算机唯一的操作系统时,我收到错误'grub-install/dev/sda failed'。 - Ubuntu问答...

    问题描述 我试图在以前运行Windows 7的盒子上安装Ubuntu. 我也遇到了可怕的"无法安装GRUB"错误. 我没有尝试双启动.我之前运行过Windows启动盘并删除了所有现 ...

  7. [失败] 尝试三:ubuntu18.04、Melodic编译uuv_simulator失败的问题 [失败]

    创建工作空间.编译其他的包没有问题,轮到uuv_simulator时发生报错: (py27) fyo@fyo:~/auv_ws$ catkin_make Base path: /home/fyo/au ...

  8. 电子签名生成的图片为空白,以及生成透明底签名图片转为白色底

    电子签名如何解决生成的图片为空白的问题,以及生成透明底签名图片转为白色底 一.生成的图片为空白 项目有个新需求需要加电子签名,在实现的过程中遇到了许多问题,现用的插件笔画延迟非常严重,好不容易做完之后 ...

  9. 无线MESH网络与WDS的异同

    目录 前言 路由和桥接 无线路由器和无线网桥 桥接和生成树算法 Mesh路由器VS无线网桥 无线网桥和MESH路由器相关专业术语 前言 对于由MESH网络设备或者WDS(无线分布系统)网络设备所组成的 ...

最新文章

  1. B1054 求平均值 (20 分)
  2. 444 nginx_nginx 安全问题
  3. MVC与单元测试实践之健身网站(三)-角色与权限
  4. WPF之ComboBox的VisualTreeHelper
  5. linux传文件file,linux文件的传输与压缩快速入门
  6. app = Flask(__name__)相关说明
  7. BZOJ1010玩具装箱 - 斜率优化dp
  8. Android实现自定义相册,在Android Gallery App中创建自定义相册
  9. 高精度测量让交会对接更“温柔”
  10. LR实战之Discuz开源论坛——网页细分图结果分析(Web Page Diagnostics)
  11. [转载]多维数组与Json格式的转化
  12. 什么是.NET应用程序域
  13. php视频转发,蓝叶分享好看视频地址解析php代码
  14. mysql默认端口号_什么是MySQL默认端口号?
  15. 校园网认证破解教程(广某大学)
  16. kasp技术原理_Massarray技术——中高通量大样本的SNP检测利器!
  17. 同一服务器两个端口不同的应用session覆盖解决方案
  18. 计算机科学与计算相关的文献,计算机类专业毕业论文参考文献大全
  19. ROS专题----tf和tf2坐标变换
  20. PAT 乙级练习 1069 微博转发抽奖

热门文章

  1. Eclipse导入类库【Java】
  2. 大疆地理围栏系统预防无人机闯入机场
  3. android图片缩小和放大Matrix
  4. 10 条真心有趣的 Linux 命令
  5. 上传一个 游戏server架构图
  6. SpringMVC上传文件遇到的问题
  7. [CC]CC插件初探
  8. 烂泥:高负载均衡学习haproxy之安装与配置
  9. 修改window窗体的背景色
  10. 再谈Jquery Ajax方法传递到action