Project Icon

3DWorld

跨平台OpenGL 3D游戏引擎 提供程序化内容生成与物理模拟

3DWorld是一款基于OpenGL的跨平台3D游戏引擎,具有程序化内容生成功能。该引擎支持生成地形、植被、建筑和宇宙内容,并提供实时编辑工具。它集成了物理模拟、天气系统、基于物理的材质渲染和动态光影等特性。3DWorld内置第一人称射击和太空殖民游戏模式,支持AI玩家。此外,它还能快速加载和渲染大型3D模型,适合游戏开发和图形研究。

仓库大小 代码大小 许可证

3DWorld博客:https://3dworldgen.blogspot.com

3DWorld是一个跨平台的基于OpenGL的3D游戏引擎,自2001年我在加州大学伯克利分校上CS184计算机图形学课程以来,我一直在开发它。 它具有以下特性:

  • 3D图形函数、类和OpenGL封装
  • 具有热重载功能的着色器生成器/处理器
  • 地形、植被、建筑等的程序化内容生成
  • 包含星系、恒星、行星、卫星等的程序化宇宙生成器
  • 具有实时用户编辑功能的程序化体素3D地形生成
  • 地形生成器,包括各种噪声函数、侵蚀、实时用户编辑、高度图读写
  • 程序化建筑(内部和外部)、道路和城市生成
  • 基本物体类型和其他物体的物理模拟(>10K动态物体)
  • 实时昼夜循环,包括天气(雨、雪、冰雹、风、闪电)
  • 基于物理的材质,具有反射和折射效果
  • 动态阴影、环境遮蔽、最多1024个动态光源、后处理效果
  • 骨骼动画和程序化动画
  • 内置第一人称射击游戏"笑脸杀手"
  • 内置太空船+星球殖民游戏
  • 建筑物品收集和僵尸游戏模式
  • FPS游戏中玩家、建筑游戏和宇宙游戏中飞船的电脑AI
  • Lightwave对象文件、3DS格式的导入器,以及用于其他文件格式的Assimp
  • 支持读取的纹理格式:JPEG、PNG、BMP、TIFF、TGA、DDS
  • 针对大型模型(>1GB顶点/纹理数据)的快速加载和实时渲染进行了优化

我在第6607次提交时将项目从svn转换为git。 大部分代码都是用C++编写的,着色器使用GLSL。 这个项目旨在成为跨平台项目。 包含了Microsoft Visual Studio 2019和2022的项目文件。 还包含一个linux/gcc的makefile,但更具实验性。详情请参阅README.linux。 该项目应该可以在linux上使用gcc构建,但可能需要一些工作,我已经有一段时间没有尝试过了。 我有一个旧的makefile,虽然已经过时,但可能不需要太多工作就能修复并使其可用。

请注意,这是一个大型仓库,目前约1GB。 我包含了源代码、配置文件、纹理、声音、小型模型、光照文件、场景数据、高度图和项目文件。 这个仓库不包含一些场景中使用的大型模型文件,你需要单独下载这些。 这意味着某些场景配置文件可能无法正常工作,因为它们找不到引用的数据。 当前的依赖列表是:

我在dependencies目录中包含了这些库的精简版本。 我移除了所有3DWorld不需要的大文件,在某些情况下甚至包括示例/测试/文档。 这些是在Windows 10上使用MS Visual Studio 2022 Community构建的。 如果你想使用这些,你需要将目录复制到根目录,并为其他版本的Visual Studio重新构建所需的库。

请注意,许多这些依赖项都比较旧,可以替换为更新的库。我一直专注于添加内容,对此不太感兴趣。 Freeglut可能应该替换为SDL,最后4个图像库可以替换为STB或DevIL。 如果你想构建3DWorld,你可以使用dependencies/文件夹中的项目,或者自行下载并构建它们,然后更改项目设置来使用它们。 我目前使用32位的MS Visual Studio 2022社区版作为3DWorld的构建目标,但如果你使用3DWorld_msvs2019.vcxproj,它也应该可以在MSVS 2019上工作。 如果你将lib64/文件夹中的DLL复制到仓库根目录并做一些其他项目设置更改,它应该可以在64位模式下编译和运行。

如果你使用Linux,可以尝试使用提供的makefile进行构建。README.linux文件应该会有帮助。 我已经在使用gcc 7的Ubuntu 18.04和使用gcc 9的Ubuntu 20.04上成功构建并基本运行了3DWorld。

3DWorld在命令行中接受一个配置文件名。如果没有找到,它会读取defaults.txt并使用其中列出的任何配置文件。 这些配置文件中包括了一些模型,如Sponza Atrium、Stanford Dragon、跑车等。 这些文件太大,无法存储在git仓库中。我已尝试让3DWorld在找不到模型时生成非致命错误。 许多较大的模型可以在McGuire计算机图形档案中找到: http://casual-effects.com/data/

我已经将那些太大而无法放入GitHub仓库的3D模型打包并上传到Google Drive(现在是第6版): https://drive.google.com/file/d/1crN9rqT-LSvYyTZTw5wtkhwsubE651ex/view?usp=sharing 其中一些模型以3DWorld的内部格式存储,不应在其他项目中重复使用。其他模型来自Mixamo等网站。

系统要求:

  • Windows 7/8/10/11(可在Windows 7上运行,但我只在8、10和11上构建过)。使用makefile和gcc时可在Linux上运行。
  • Microsoft Visual Studio 2019或2022。需要专业版或社区版以支持OpenMP。你也可以尝试在Linux上使用gcc。
  • 相对较新一代的Nvidia或ATI GPU(在我的Intel集成显卡笔记本上可以运行,但帧率只有12-20 FPS)
  • 对于较大的场景,至少需要4GB系统内存
  • 对于较大的场景,至少需要4GB GPU内存;我的GPU有12GB内存

故障排除: 似乎有些系统需要OpenGL核心上下文。可以通过在配置文件中添加"use_core_context 1"来选择此选项。 这也可以在scene_config/config_post.txt中启用,该文件在读取所有其他顶级配置文件后应用。 在某些情况下,使用核心上下文可能会较慢,这就是为什么我默认没有启用它。

常用按键(更多按键绑定请参见readme-keys.txt):

  • a,s,d,w:移动
  • q,e:切换武器(游戏模式)
  • 'space':跳跃/开火
  • 'esc':退出
  • 'tab':屏幕菜单(用方向键导航,'X'切换菜单)
  • b:启用物体/物理/AI(用于地面模式和宇宙模式游戏)
  • F1:在地面/宇宙/瓦片地形模式之间切换
  • F2:切换游戏模式
  • m:切换全屏模式
  • h:切换飞行移动
  • v:更改相机模式(水晶球/轨道 vs. 第一人称)
  • V:切换鼠标视角
  • K:切换俯视地图模式
  • x:暂停
  • 鼠标左键:转向/动作
  • 鼠标右键:开火

我目前将这个仓库作为教育目的在GPL许可下公开。 它不是一个商业工具,我也不是为了赚钱。 在这个早期阶段,我也不打算让其他人参与项目工作,尽管我接受反馈和建议。 如果我决定把它做成一个真正的游戏,情况可能会有所改变。 如果你想在你的项目中使用这里的某些内容,请告诉我。

3DWorld没有进一步的文档。 不过,我确实有一个博客,其中包括算法描述和大量截图: https://3dworldgen.blogspot.com

以下是一些来自我博客的截图链接:

[图片1]

这是一个建筑物的零售区,有成排的货架。建筑物可以包含数万个玩家可以拿起和携带的交互对象。(config_heightmap.txt)

[图片2]

放置在其他房间的摄像头在安全监视器上显示实时视频流。(config_heightmap.txt)

[图片3]

僵尸(具有寻路和其他AI行为)在室内游泳池周围行走并掉入其中。水面有波纹、水花、反射和折射效果。(config_heightmap.txt)

[图片4] 停车场内停放着汽车,天花板上安装有喷水管道。(config_heightmap.txt)

alt text

程序生成的建筑地下室,有人、间接照明和天花板上的管道。(config_heightmap.txt)

alt text

程序生成的住宅区,背景是办公楼。人和车辆分布在人行道上和建筑物内。(config_heightmap.txt)

alt text

程序生成的建筑内部 - 一个图书馆,里面的书籍也是程序生成的。(config_heightmap.txt)

alt text

程序生成的房屋和办公楼,包括完整的内部结构。(config_heightmap.txt)

alt text

夜景中的反射(金属)、折射(玻璃)、发光和半透明球体,带有间接照明。实时绘制;球体可以交互式移动。(config_white_plane.txt)

alt text

程序生成的城市,包括建筑、道路、汽车和行人。(config_heightmap.txt)

alt text

夜晚的程序生成城市,前景是一座桥。(config_heightmap.txt)

alt text

早期程序生成的城市,有松树。

alt text

早期程序生成的城市。

alt text

使用域扭曲噪声和水力侵蚀模拟生成的地形,城市尚未放置。(config_heightmap.txt)

alt text

平铺地形模式,包括河流、树木、草地等。(config_t.txt)

alt text

实时交互式破坏性火灾/烟雾模拟,涉及树木、植物和草地。(config_trees.txt)

alt text

程序生成的宇宙太阳系,带有小行星带。(universe/config_universe.txt)

alt text

Crytek Sponza中庭场景,带有动态投射阴影的光源和间接照明。(sponza/config_sponza2.txt)

alt text

在平铺地形模式(普吉特海湾高度图)中放置了10,000个高度详细的博物馆模型实例,并在实时中绘制,包括阴影和间接照明。(config_museum_tt_model.txt)

alt text

Crytek Sponza中庭,带有反光地板和200个实时动态点光源。(sponza/config_sponza2.txt) 替代文本

办公楼庭院中的多个反射/折射球体和立方体,具有基于密度的光衰减效果。(mapx/config_mapx.txt)

替代文本

圣米格尔场景,带有动态降雪和使用自定义着色器渲染的路径追踪雪覆盖图。(config_san_miguel.txt)

替代文本

圣米格尔场景,使用预计算的路径追踪间接照明、法线贴图和立方体映射反射表面进行实时渲染。(config_san_miguel.txt)

替代文本

200万棵程序生成和放置的松树(50万棵可见),在分块地形模式下使用实例化广告牌实时绘制。(config_t.txt)

替代文本

在mapx场景中互动堆叠10,000个动态箱子。堆叠可以移动和推倒,场景可以保存/重新加载/编辑。(mapx/config_mapx.txt)

替代文本

程序生成的带有小行星环的行星。(universe/config_universe.txt)

替代文本

小行星带,包含10,000个动态(旋转和绕轨道运行)小行星、100,000个点精灵粒子,以及用于尘埃的体积广告牌云。(universe/config_universe.txt)

替代文本

分块地形模式,展示各种形式的程序生成植被,包括草、花、松树、棕榈树和落叶树。这些实际上是能投射阴影的多边形模型。(config_t.txt)

替代文本

在Crytek Sponza场景中,通过基于噪声的体积烟雾实现实时、动态光束。(sponza/config_sponza2.txt)

替代文本

Crytek Sponza场景中的反光金属地板,带有间接阳光和天空照明。(sponza/config_sponza2.txt)

替代文本

在办公楼大厅的动态场景中,使用立方体贴图反射纹理实时绘制的反光球体、圆环和立方体。材质是使用基于物理的模型混合的金属和电介质。(mapx/config_mapx.txt)

替代文本

博物馆场景,具有间接照明、反射表面和阴影映射。这个模型采用程序化纹理。(config_museum.txt)

替代文本

通过投放10亿个雪粒子并积累雪量生成的积雪房屋场景。雪是预计算的,但可以实时渲染。(house/config_house_winter.txt)

替代文本

雨水模拟和渲染,包括每个雨滴的碰撞检测和湿润/反光表面。(house/config_house.txt)

替代文本

来自重叠聚光灯的间接照明和阴影应用于动态物体。(mapx/config_mapx.txt) alt text

在分块地形模式下使用硬件曲面细分的水波模拟。(config_t.txt)

alt text

程序生成的3D体素冰洞,具有间接照明效果。这种地形可以通过笔刷和武器射击在实时中进行编辑。(config_ice_caves.txt)

alt text

完全在片段着色器中绘制的程序生成行星,无需使用纹理。这包括地形生成(冰、雪、岩石、森林、沙漠、泥土)、水、云和大气层。(universe/config_universe.txt)

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号