当前位置: 首页 > news >正文

游戏模型提取工具ninjaripper_图文翻译 | 赛车游戏道路的程序生成

153ed50312d21fdb212bc06916f464e7.png

937e9ba2095bb72de04f2b6e77d53175.png

1介绍

我叫DávidKerekes(25岁),是匈牙利一家小型工作室的游戏开发者。我要向您展示的项目是为即将推出的手机赛车游戏创建环境关卡。主要是处理地形,纹理,树叶,照明,着色器,碰撞。

最终我们4人的工作室提前6周完成了19个关卡,3种生物群落类型的关卡环境制作任务,同时确保其能够以最佳性能运行。

ef21e411fe20eb4ba0405405df6e4f95.png

2地形

首先,我们从甲方那里得到了基础的Unity地形,上面有一些细微的雕刻细节和道路方向。我们便将其转换为Houdini Heightfield。这个高度场数据是通过我们3个生物群落特定侵蚀网络之一提取的。每个生物群落网络都对海拔,侵蚀和生物群落(如多种草或土壤)具有不同的控制。

这样,我们通过一个广义的地形系统,可以在数分钟内改变关卡的环境生物群落。同时,我们可以在不破坏整个系统的情况下自由迭代我们的生物群系效果。例如,在splat贴图阶段,我们可以退回几次并将一些必要的数据添加到高度图中。

334dee130ac308708ff2b84a216c0f70.png

528f845654d82cdbb881e7ef741e2d04.png

3道路

有了道路网,我们的工作就很简单了。我们可以控制宽度和分段的坡度。然后将道路网格投影到地形上,并进一步生成生态群落,UV以及碰撞。同时通过保留道路边缘,可以很方便通过copy节点自动放置障碍物。绘画控件有助于打破重复和随机感。稍后在管道中,我们还必须对模型进行优化并将这些网格切成块以方便剔除。

这个流程跳过了高/低模型烘烤,因为是直接从SD生成的高度图中生成低模。所以,SD生成的法线贴图与模型很贴合。

d91380b834dae3afe601680db6adac18.png

4地形贴图

通过地形高度图蒙版,提取所有关键的splat数据。道路在哪里,地形有多陡峭,岩石在哪里?通过将它们全部提取到COP中,可以轻松地混合一些有趣的细节。例如,我们可以将道路纹理与地形混合在一起。通过使用COP和给定的数据,可以扩展和模糊道路边缘。而且这些操作都是完全程序性的,系统中的任何更改都会自动更新,其他所有通道均用作不同的地形纹理的遮罩

191f180aa8ffa030412080c2552e590f.png

676e6f24b79939a059ec36c6865734aa.png

ece79c23480fe448944882be334df7f8.png

5uv光影
当进行光烘焙时,每个生态群系都有所不同。以森林生态群系为例,可以将所有东西转换为具有不同分辨率的volumes,然后便可以获得类似于AO的软阴影。

68df3316f2f8f534beda1660e1d9e383.png

起初,我以为“好吧,我们必须为所有内容烘焙光照贴图”。事实证明这不是必需的。对地形,道路和障碍进行灯光映射足以实现我们想要的目标。考虑到柔和的阴影,没有太多的细节需要处理。我们使用了一个简单的UV展开节点制作光照贴图,该节点具有较大的填充,以减少小多边形面上的我们可以降低光照贴图的烘焙程度,而在游戏过程中没有任何明显的视觉错误。

6碰撞

首先,我们提取了汽车可能碰撞的所有物体。然后提取道路边缘,然后向内缩进一段距离, 以便能够涵盖所有的碰撞点。然后,运行一个Ray SOP来确定碰撞物体的位置,虽然,它并不总是完美的,但大大减少了手工工作。

f480569f2c8bc7e0ec0bcd2186cadea0.png

9f3d78479ac62320246eeea777f894c8.png

7总结

Houdini的优点在于,它使像我这样的艺术家能够编写和设计自己的工具和系统,然后实现自己想做的东西。工具的进步节省了大量的制作时间,空出了更多的时间进行迭代。

- End -

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 系统出错信息设计
  • 团队软件库_谷歌的软件工程文化:激发创造力、鼓励自主性
  • ActiveBPEL引擎流程部署描述符(pdd)文件概述
  • 200 switching to ascii mode_上海某超市保安遭辞退怒砸200瓶红酒;香槟产区采收时间打破历史记录 | 酒界新闻...
  • ODM和OLAP实现时序预测(一)
  • 16进制 转为图片 php_ImageMagick(图片处理软件) 分享
  • 数据分析 超市条码_超市小程序做得比较好的功能点是什么?
  • ODM和OLAP实现时序预测(二)
  • 软件产品研发方向调研内容_研发部职能分解:调研,产品、技术、工艺、软件研发,测试、验收...
  • 网页像素测量工具_寓教于乐!11 个提升网页设计和前端开发技能的趣味游戏
  • ODM和OLAP实现时序预测(三)
  • asp 执行 exe_asp.net core 系列 18 web服务器实现
  • 搜索引擎登录,网站分类目录登录地址
  • python删除列表元素_Python去除列表中对应数量的元素(一一对应)
  • 基于Java Socket的文件UpLoad代码
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • ES6语法详解(一)
  • Flannel解读
  • JAVA_NIO系列——Channel和Buffer详解
  • Java精华积累:初学者都应该搞懂的问题
  • PHP变量
  • Terraform入门 - 3. 变更基础设施
  • 第2章 网络文档
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 前端工程化(Gulp、Webpack)-webpack
  • kubernetes资源对象--ingress
  • Mac 上flink的安装与启动
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • #define 用法
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (02)Unity使用在线AI大模型(调用Python)
  • (day6) 319. 灯泡开关
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (分类)KNN算法- 参数调优
  • (南京观海微电子)——COF介绍
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (五)网络优化与超参数选择--九五小庞
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)memcache、redis缓存
  • (转)项目管理杂谈-我所期望的新人
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .net 4.0发布后不能正常显示图片问题
  • .NET 反射的使用
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .net下的富文本编辑器FCKeditor的配置方法
  • ::什么意思
  • @Repository 注解
  • [C++][opencv]基于opencv实现photoshop算法色阶调整
  • [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape
  • [Day 26] 區塊鏈與人工智能的聯動應用:理論、技術與實踐