# GravityEngine **Repository Path**: superstarimage/gravity-engine ## Basic Information - **Project Name**: GravityEngine - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-03-11 - **Last Updated**: 2023-03-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README GravityEngine项目配置及开启方法 > 当前渲染器项目基于开源DX项目框架【GravityEngine】开发 原作者:MrySwk 原框架链接:https://github.com/MrySwk/GravityEngine 以下是项目的配置和开启方法,以及当前的CAD导入接口说明: # **一、环境配置** ## **1. IDE:Visual Studio 2017(2019会报错)** - **需添加的模块**(使用Visual Studio Installer安装): .NET桌面开发、使用C++的桌面开发、使用C++的游戏开发; ![VSCompunent01](https://gitee.com/superstarimage/gravity-engine/raw/master/screenshot/VSCompunent01.png) ![VSCompunent02](https://gitee.com/superstarimage/gravity-engine/raw/master/screenshot/VSCompunent02.png) - **需要在Viusal Studio 2017内部添加的模块**: NuGet包,**添加方法:**工具→扩展和更新→联机,搜索:NuGet,下载【NuGet Package Project for Visual Studio 2017】。 ## **2. 第三方库** 1. **Boost库** Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,被广泛应用为各种第三方库的依赖库,具体配置方法如下: **安装:**在官网下载Boost库的压缩文件,解压后编译安装,cmd环境下,在根目录执行下述命令安装: ```bash .\bootstrap.bat # 生成bjam.exe或b2.exe # 运行生成的bjam.exe或者b2.exe .\bjam.exe # or .\b2.exe ``` **配置:**在visual studio中只需要对【GEngine】项目配置Boost库即可。添加包含目录(include头文件)和库目录(lib库文件): 工程名→配置属性→C/C++→常规→附加包含目录,添加: ```bash D:\\Softwares\\boost_1_74_0 ``` 工程名→配置属性→链接器→常规→附加库目录,添加: ```bash D:\\Softwares\\boost_1_74_0\\stage\\lib ``` 2. **FBX SDK** FBX SDK是Autodesk为C++和Python开发(非开源),用于方便处理Fbx文件的一套工具,**在不需要打开Fbx文件的前提下**,对Fbx文件里的节点进行必要的修改和处理。 **安装方法**,**直接**在官网下载FBX SDK 2019.2 VS2017版本文件并安装:https://www.autodesk.com/developer-network/platform-technologies/fbx-sdk-2019-2 **然后需要**在\GravityEngine-master\GEngine\目录下新建目录:\ThirdParty\FBX SDK,并将安装好的FBX SDK目录下的\2019.2文件夹拷贝到\GravityEngine-master\GEngine\ThirdParty\FBX SDK目录下。 听起来有些繁琐,目前已经在Visual Studio 2017中的包含目录、库目录设置好了FBX SDK的路径,也就是上面的路径,所以只需要把相关文件拷贝到对应位置即可。 **最后还需要**做一次数据拷贝: ```bash copy FBX SDK\\2019.2\\lib\\vs2017\\x64\\debug\\ {libfbxsdk.dll,libfbxsdk.lib,libfbxsdk.pdb} to Debug\\Build ``` 3. **其它库** D3DX12和DirectXTex库,已经在项目中配好了(Win10SDK自带D3DX12),所以不需要手动设置。 4. **可能存在的BUG** 编译运行项目时可能会报出“snprintf”不是"std"的成员的错误,主要原因是命名空间与boost库之间出现了冲突,解决方法是把std::删除: ```bash // system_category_win32.hpp文件 line: 52 inline char const * unknown_message_win32( int ev, char * buffer, std::size_t len ) { std::snprintf( buffer, len, "Unknown error (%d)", ev ); // 将std::删除 return buffer; } ``` # **二、项目运行方法** 编译运行项目,点击【File】→【Open】,在新打开的窗口中选中/GEngine/Debug/Project目录下的test02_PBR.gproj文件并打开: ![CADAssemblyModel](https://gitee.com/superstarimage/gravity-engine/raw/master/screenshot/CADAssemblyModel.png) # **三、CAD模型导入接口** 1. 渲染器支持直接接收由顶点序列和索引序列描述的网格模型,如下实例: ```C++ std::vector> vertexArray; // Vertex array,一个元素由顶点的x、y、z坐标构成 std::vector> indexArray; // Index array,一个元素由构成三角面的三个顶点索引构成 // 接收顶点序列和索引序列 getVertexIndexArray(vertexArray, indexArray); // 直接根据顶点序列和索引序列构建Mesh GRiMeshData cadPartMeshData = geoGen->CreateCADMesh(vertexArray, indexArray); ``` ​ 相关代码位于GCore.cpp line1298 - 1304。 2. 渲染器支持读取json文件中的数据,相关模型的json数据文件位于如下目录中:GravityEngine-master\GEngine\JsonRes\。 相关代码位于GCore.cpp line1293 - 1301。