3DWorld

3DWorld

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

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

3DWorld游戏引擎OpenGL程序化内容生成物理模拟Github开源项目

仓库大小 代码大小 许可证

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)

编辑推荐精选

问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多