Dandelion 1.1.1
A light-weight 3D builder for educational usage
|
编译和运行的环境必须满足如下条件:
运行于 x86-64 硬件架构上的 Windows 10 / 11、macOS 和 Debian / Ubuntu / Linux Mint / Fedora / Arch Linux / Manjaro 等常见 Linux 发行版均满足条件。使用 Apple M 系列芯片 (Apple Silicon) 的 macbook 和 iMac 同样可以。
在 Linux 平台上,我们仅对 KDE 和 GNOME 两种桌面环境提供支持。其他的桌面环境上也许可以运行,但我们不提供任何保证。
非常不建议使用虚拟机中的系统,因为 Virtual Box 支持的 OpenGL 版本太低,而 VMware 的虚拟显卡驱动实现的 OpenGL API 疑似存在 bug。
目前已经确认 VMware 创建的 Windows 虚拟机完全不能正常使用 Dandelion 框架;Linux 虚拟机也许可以运行,但依然有可能出现问题,并且我们 不负责解决任何在虚拟机下运行产生的问题 。
同理,不建议使用 WSL 进行实验。因为 WSL2 本质上也是一个虚拟机,我们确实没有精力去解决虚拟环境带来的问题。
这个项目依赖于如下的第三方库:
在 Linux 平台上,为了编译 GLFW ,你可能需要按照 Compiling GLFW 的要求安装相应的依赖库。除此以外,所有的依赖项均被包含于 deps 子目录中,不需要额外下载或安装。由于我们对一些库进行了修复移植或裁剪,也请不要轻易尝试替换 deps 目录下的第三方库,它们和官方发布的相应版本可能并不完全一样。
由于 Dandelion 首先是一个实验框架,用于西安交通大学计算机图形学课程教学,我们在 Dandelion 的公开频道上删去了所有实验题目的参考答案。然而物体拾取 (picking) 等功能依赖于射线求交,这部分代码被删去后会造成相当的不便。对此,我们的解决方案是将 utils 目录下的 aabb.cpp, bvh.cpp 和 ray.cpp 文件编译成两个静态库 dandelion-ray 和 dandelion-bvh ,只要在编译时链接它们就可以直接使用我们提供的实现。我们目前编译了这些版本的库:
如果你想要使用这个静态库,请到仓库 Release 中下载符合自己操作系统、编译器的版本。带有 -debug
后缀的库用于 Debug 模式,不带此后缀的用于 Release 模式。相应的链接指令在 CMakeLists.txt 中已经写好,将四个文件都放置于 deps 目录下即可通过编译。
源代码、静态库和预编译的可执行文件都发布在 GitHub 和 Gitee 两个平台,仓库地址分别为:
在 Windows 平台上,从官方网站下载安装足够新的 Visual Studio 和 CMake 即可;在 Linux 平台上可以用包管理器安装编译器和 CMake;在 macOS 平台上,我们推荐安装 Xcode 命令行工具(不是 Xcode IDE),并使用 Homebrew 安装 CMake。
基于 Debian 的 Linux 发行版(使用 apt 包管理器)中,所需软件包名是
build-essential cmake cmake-extras
,其他发行版请自行确定对应的包,亦可选择从源代码编译安装。
我们使用 portable-file-dialogs 实现模型文件选择的对话框,这个库使在不同的平台上使用不同的原生命令或 API。在 Linux 平台上需要额外注意一些问题:
kdialog
命令,使用 KDE 桌面环境的同学请尝试执行 kdialog
命令以检查此命令是否存在。如不存在,你的 Dandelion 将无法加载模型文件,此时你应当安装包含该命令的软件包。 目前已发现 Manjaro KDE 不自带
kdialog
命令,请执行sudo pacman -S kdialog
来安装它。其他发行版请自行查找对应的软件包名称。
zenity
、matedialog
或 qarma
命令,使用 GNOME 桌面环境的同学请确认你的系统上至少可以执行其中一个命令。如果全都不能执行,请安装其中之一。kdialog
或 zenity
命令创建对话框,但我们不对此提供任何保证,也不会分散精力解决非 KDE / GNOME 桌面环境的任何问题。由于日志输出是调试实验的重要参考,我们始终推荐从 终端 启动 Dandelion。在 Windows 平台上,我们推荐使用 PowerShell 而非 cmd,并推荐使用 Windows Terminal 作为终端模拟器;在 Linux 或 macOS 平台上可以直接使用默认的 shell 和终端模拟器,更熟悉这些工具的话也可以自己挑选。
以下的所有说明中,均以“终端”代指终端模拟器而非 shell。不清楚二者区别的话,可以简单认为“终端”就是指能执行命令的窗口。
由于我们人力有限,Dandelion 仅支持 Debug 和 Release 两种构建类型,在不修改 CMakeLists.txt 的情况下,你也只能用这两个类型构建 Dandelion。这并不意味着 MinSizeRel 和 RelWithDebInfo 类型一定会构建出错,但我们不会在这两个模式下作任何测试。
由于 Dandelion 的源文件中包含 UTF-8 编码的中文,整个项目需要开启 /utf-8
选项编译,而 Windows 文件系统默认的中文编码是 GBK ,这可能导致兼容性问题(表现为“无访问权限”等)。因此,Dandelion 的源代码必须位于全英文路径下。
打开终端,进入 dandelion 根目录并执行如下命令:
完成后可以直接运行程序:(必须在 build 目录下执行命令,切换到 Debug 目录下会导致程序找不到资源文件))
MSVC 和 MS Build 是 Multi-config 的构建工具,在调整构建类型时不需要重新配置 CMake 项目,只需修改参数重新编译:
如果你希望在 Windows 平台上使用 MinGW 工具链构建,请注意 MinGW 是 Single-config 构建工具,执行命令的方式与 Linux 平台相同。
打开终端,进入 dandelion 目录并执行如下命令:
完成后可以直接运行程序:
GNU Make 是 Single-config 的构建工具,需要重新配置 CMake 项目才能改变构建类型:
调整 cmake
命令的参数可以调整编译设置。修改 --parallel
参数后接的数字可以调整编译器使用的线程数,建议和物理核心数量等同。
macOS 同样支持 GNU Make 工具,因此打开终端执行和 Linux 平台相同的命令即可。
Dandelion 应当可以使用 Xcode 编译,请注意 Xcode 和 Visual Studio 一样是 Multi-config 的构建系统,应该参照 Windows 的命令编译。我们人力有限,目前不会测试 Xcode 兼容性。