专访LayaAir引擎最有价值专家-施杨

在 LayaAir 引擎的资源商店中,许多开发者都会注意到一个熟悉的名字——“射手座”。他不仅贡献了大量高质量的 Shader 资源,让一些开发者通过他的作品了解到 LayaAir 引擎在 3D 视觉效果上的更多可能,也让大家能够以低成本直接学习并应用这些炫酷的效果实现。

射手座的部分LayaAir Shader 效果合集

作为 LayaAir 生态中具有影响力的贡献者之一,他在去年 LayaAir 引擎八周年生日庆典(6.30)上荣获了《LayaAir 引擎最有价值专家》荣誉称号。今天,我们将走近这位开发者,分享他与 LayaAir 引擎的故事、作品、心得……

欢迎大神介绍一下自己,以及您是如何进入游戏开发行业的?

LayaAir 引擎

朋友们好,我叫施杨,网名“射手座”,是来自武汉的LayaAir引擎游戏开发者。

我目前从事海外社交相关的游戏,主要负责基于LayaAir引擎项目的框架搭建、引擎的功能扩展和改造、引擎的问题处理、引擎插件工具的制作,核心业务模块的编写等。业余时间研究3D渲染相关技术。

    我读书的时候学习的是Java Web,每天的学习内容都是枯燥的数据库增删改查,以及jsp页面的表单操作。

    直到有一天,我在一个视频网站上看到了Flex的教程,进去简单的看了一下,瞬间就被Flex的复杂交互效果和美观的界面吸引。

    Flex 是基于 ActionScript 语言的开发框架,拥有丰富的组件库和强大的图形处理能力,这让我眼前一亮。

    它就像一个充满魔法的工具箱,里面装满了各种神奇的工具,能够轻松实现各种炫酷的动画效果和交互体验。

    我被它的灵活性和强大功能深深吸引,于是开始深入研究 Flex 的开发技术。

    后来,我接触到当时非常火爆的网页游戏 QQ 农场,了解到它也是基于 ActionScript 开发的,就下定决心以后也要做出这样优秀的游戏,随后就进入了游戏行业,直到现在。

您是什么时候开始接触 LayaAir 引擎的?因为什么契机选择了 LayaAir?

LayaAir 引擎

2016 年,我在斗鱼从事网页播放器相关业务,公司使用的技术是 AS3,但由于 Flash 即将被淘汰,业务需要全面转向 HTML5。

2017 年,我正式开始接触 LayaAir 引擎。当时国内只有 LayaAir 支持 AS3 语言,并且内置了 Flash 领域知名的 UI 框架 MornUI,基本无缝衔接上了。

随后,微信小游戏开始爆火,LayaAir 是当时国内唯一支持 3D 的引擎,并随着 Flash 的彻底淘汰,我就顺势进入了小游戏行业。

在您使用 LayaAir 开发游戏的早期,是否遇到过什么技术难点或挑战?

LayaAir 引擎

2018 年,看到微信小游戏上各种球球类3D游戏爆火,我们也想试试 3D 跑酷类型的玩法。用 LayaAir2 引擎,没几天就把基本玩法做出来了,但测试时发现赛道一直是笔直的,玩起来很单调。于是,就想着能不能让赛道可以 上下左右自由转弯,增加变化。

然后就开始疯狂查资料,偶然看到了 Shader 这个词,但完全不知道是干嘛的。只能硬着头皮找各种相关教程恶补,学了一段时间后,对 Shader 有了一点理论概念。接下来就是在 LayaAir2 里不断试验,反复调试,最后总算实现了赛道的自由弯曲。

2019 年,有挑战的也是 3D 跑酷类小游戏,但赛道是类似过山车那种蜿蜒曲折的轨道。我看完需求后毫无头绪,之前用 Shader 做的弯曲方式完全不适用了。

还是老办法,先到处查资料,结果搜到了 样条线(Spline) 这个概念。随后还找到了国外引擎的类似效果代码,研究了它的实现方式,发现可以把轨道沿着样条线生成。于是,就把这套思路复刻到 LayaAir 里进行实现,最终完美解决了问题。

2020 年,又遇到一款有难度的小游戏 ,是 3D 切水果的玩法,其中有个关键效果——需要把黄瓜削成卷起来的形态。看完需求,当时也是没思路,完全不知道该怎么做。

沿用老套路,先在技术群里问一圈,看看能不能找到有用的关键词,同时也在网上到处查技术资料。最后,果然找到一个很重要的关键词——顶点偏移(Vertex Offset),这才有了一点方向。

核心思路是:动态调整顶点的位置,让削下来的部分沿着圆形展开。但这个算法网上是找不到的,只能自己一点点摸索。经过反复试验,我发现 根据 Z 轴的距离,把 X、Y 坐标转换到圆上,就能形成削皮效果。于是就沿着这个思路优化,最终搞定了这个功能。

回头看,LayaAir 开发的这些年,遇到的问题一个比一个复杂,但基本都是靠 查资料 + 找关键词 + 参考网络上的实现或思路 + 反复试验 来解决的。每次攻克难题,都是一个学习和成长的过程,也让我掌握了 Shader 以及一个个陌生的技术难点,开发能力变得越来越扎实。

可以介绍一下您在LayaAir资源商店中的作品吗?

LayaAir 引擎

虽然每个场景示例用到的技术都不太一样,但有一些通用的基础材质是最实用的,其中最核心的就是 Standard 和 StandardSpecular 这两个材质。

Standard 材质 具备漫反射、高光反射、自发光、不透明度等基础参数。可以通过调整漫反射颜色来确定材质的基本色,高光反射参数控制材质表面的光泽度和高光的强度大小,自发光能让材质产生发光效果,不透明度则可以呈现透明或半透明的状态。

StandardSpecular 材质 则是对 Standard 材质的一种扩展或变体,更侧重于镜面反射(高光)效果的精细控制。除了 Standard 材质的基础参数外,还增加了 专门的镜面反射颜色和强度参数,能更精准地模拟不同材质的高光特性。

基本上,每个场景都离不开这两个材质,比如 溶解场景 里,用 Standard 材质做基础渲染,扩展顶点 Shader,再结合 Animation 来控制材质的各种属性

全息场景 里,用 StandardSpecular 材质渲染建筑,再用 Standard 材质结合 深度图、HDR 颜色,实现全息材质的效果。

海岛场景 里,Standard 材质被用来渲染骨架、木板、小船、石头等,而基于 Standard 实现的树干、树叶、草的材质,再加上 三平面映射技术的岩石材质,以及基于 StandardSpecular 的 水材质,让整个场景的光影和材质表现更真实。

每个作品都是花费大量时间研究、摸索出来的,所以这一年的作品合集就是我目前最满意的成果。但 Shader 这块没有止境,后面我还会不断学习、继续探索,相信未来能做出更好的作品!

除了Shader资源,您后续还有没有其它类型的资源制作计划?

LayaAir 引擎

为了让渲染效果更炸裂,光靠引擎本身还不够,Shader 的表现力也是关键。在这个方向上,其实还有很多我想做但还没实现的效果,所以打算 拆分成一个个小目标,一步步去搞定,慢慢把 LayaAir 作品的渲染效果拉满。

另外,国外那些引擎上的炫酷效果,我也会尝试 用 LayaAir 复现出来。所以,接下来的重点还是 围绕游戏视觉表现下功夫,制作更多 Shader 效果资源。

您对 LayaAir 引擎怎么看,还有哪些期待和建议?

LayaAir 引擎

LayaAir 引擎迭代快,问题修复及时,IDE 非常流畅。尤其是 LayaAir 引擎的源码可读性很好,可以在源码中学习到很多东西,同时还可以发现很多实用的工具类。

虽然 LayaAir3 的 IDE 已经可以编辑 3D 了,但我还是希望官方能持续优化 Unity 资源的导出插件。从成本角度考虑,会有开发者直接在 Unity 商店买美术资源,然后导入 LayaAir 来用。

还有就是,之前看到 LayaAir 支持 WebXR,但目前只做了 VR,AR 这块后面好像没什么动静了。感觉可以多多推进 AR、数字孪生这些方向。

小编:AR与数字孪生等,都可以基于LayaAir引擎现有功能实现。引擎内集成的需求,也在引擎发展计划内。

对于想要使用和刚刚使用 LayaAir 进行开发的新人,您有什么建议?

LayaAir 引擎

对新人来说,最重要的还是多动手、多练习。可以先从官方示例或者开源项目入手,一步步照着实现,遇到卡壳的地方,就针对性地深入研究。

另外,学会调试非常关键。很多问题其实不用急着问别人,花点时间一步步调试,往往就能自己找出原因并解决。掌握好调试技巧,不管是开发还是优化,都会事半功倍。

图片

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/37114.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型详细配置

Transformer结构 目前主力大模型都是基于Transformer的,以下是Transformer的具体架构 它由编码器(Encoder)以及解码器(Decoder)组成,前者主要负责对输入数据进行理解,将每个输入 词元都编码成一个上下文语义相关的表示向量;后者…

鸿蒙NEXT项目实战-百得知识库04

代码仓地址,大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点: 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…

Python数据可视化实战:从基础图表到高级分析

Python数据可视化实战:从基础图表到高级分析 数据可视化是数据分析的重要环节,通过直观的图表可以快速洞察数据规律。本文将通过5个实际案例,手把手教你使用Python的Matplotlib库完成各类数据可视化任务,涵盖条形图、堆积面积图、…

修改原生的<input type=“datetime-local“>样式

效果 基础样式 <input type"datetime-local" class"custom-datetime">input[type"datetime-local"] {/* 重置默认样式 */-webkit-appearance: none;-moz-appearance: none;appearance: none; // 禁用浏览器默认样式/* 自定义基础样式 */w…

scrapy入门(深入)

Scrapy框架简介 Scrapy是:由Python语言开发的一个快速、高层次的屏幕抓取和web抓取框架&#xff0c;用于抓取web站点并从页面中提取结构化的数据&#xff0c;只需要实现少量的代码&#xff0c;就能够快速的抓取。 新建项目 (scrapy startproject xxx)&#xff1a;新建一个新的…

fetch,ajax,axios的区别以及使用

fetch,ajax,axios这些都是发起前端请求的工具&#xff0c;除了这些外还有jquery的$.ajax。ajax和$.ajax都是基于XMLHttpRequest。 介绍下XMLHttpRequest XMLHttpRequest是一种在浏览器中用于与服务器进行异步通信的对象&#xff0c;它是实现 AJAX&#xff08;Asynchronous Ja…

微信小程序的业务域名配置(通过ingress网关的注解)

一、背景 微信小程序的业务域名配置&#xff08;通过kong网关的pre-function配置&#xff09;是依靠kong实现&#xff0c;本文将通过ingress网关实现。 而我们的服务是部署于阿里云K8S容器&#xff0c;当然内核与ingress无异。 找到k8s–>网络–>路由 二、ingress注解 …

LiteratureReading:[2016] Enriching Word Vectors with Subword Information

文章目录 一、文献简明&#xff08;zero&#xff09;二、快速预览&#xff08;first&#xff09;1、标题分析2、作者介绍3、引用数4、摘要分析&#xff08;1&#xff09;翻译&#xff08;2&#xff09;分析 5、总结分析&#xff08;1&#xff09;翻译&#xff08;2&#xff09;…

前后端联调解决跨域问题的方案

引言 在前后端分离的开发模式中&#xff0c;前端和后端通常在不同的服务器或端口运行&#xff0c;这样就会面临跨域问题。跨域问题是指浏览器因安全限制阻止前端代码访问与当前网页源不同的域、协议或端口的资源。对于 Java 后端应用&#xff0c;我们可以通过配置 CORS&#x…

开源软件许可证冲突的原因和解决方法

1、什么是开源许可证以及许可证冲突产生的问题 开源软件许可证是一种法律文件&#xff0c;它规定了软件用户、分发者和修改者使用、复制、修改和分发开源软件的权利和义务。开源许可证是由软件的版权所有者&#xff08;通常是开发者或开发团队&#xff09;发布的&#xff0c;它…

python爬虫笔记(一)

文章目录 html基础标签和下划线无序列表和有序列表表格加边框 html的属性a标签&#xff08;网站&#xff09;target属性换行线和水平分割线 图片设置宽高width&#xff0c;height html区块——块元素与行内元素块元素与行内元素块元素举例行内元素举例 表单from标签type属性pla…

电脑节电模式怎么退出 分享5种解决方法

在使用电脑的过程中&#xff0c;许多用户为了节省电力&#xff0c;通常会选择开启电脑的节能模式。然而&#xff0c;在需要更高性能或进行图形密集型任务时&#xff0c;节能模式可能会限制系统的性能表现。这时&#xff0c;了解如何正确地关闭或调整节能设置就显得尤为重要了。…

AI学习——卷积神经网络(CNN)入门

作为人类&#xff0c;我们天生擅长“看”东西&#xff1a;一眼就能认出猫狗、分辨红绿灯、读懂朋友的表情……但计算机的“眼睛”最初是一片空白。直到卷积神经网络&#xff08;CNN&#xff09;​的出现&#xff0c;计算机才真正开始理解图像。今天&#xff0c;我们就用最通俗的…

2025年渗透测试面试题总结- shopee-安全工程师(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 shopee-安全工程师 信息安全相关Response头详解 1. 关键安全头及防御场景 Linux与Docker核心命令速查…

IntelliJ IDEA 中 Maven 的 `pom.xml` 变灰带横线?一文详解解决方法

前言 在使用 IntelliJ IDEA 进行 Java 开发时&#xff0c;如果你发现项目的 pom.xml 文件突然变成灰色并带有删除线&#xff0c;这可能是 Maven 的配置或项目结构出现了问题。 一、问题现象与原因分析 现象描述 文件变灰&#xff1a;pom.xml 在项目资源管理器中显示为灰色。…

Spring MVC 接口数据

访问路径设置 RequestMapping("springmvc/hello") 就是用来向handlerMapping中注册的方法注解! 秘书中设置路径和方法的对应关系&#xff0c;即RequestMapping("/springmvc/hello")&#xff0c;设置的是对外的访问地址&#xff0c; 路径设置 精准路径匹…

技术分享 | MySQL内存使用率高问题排查

本文为墨天轮数据库管理服务团队第51期技术分享&#xff0c;内容原创&#xff0c;如需转载请联系小墨&#xff08;VX&#xff1a;modb666&#xff09;并注明来源。 一、问题现象 问题实例mysql进程实际内存使用率过高 二、问题排查 2.1 参数检查 mysql版本 &#xff1a;8.0.…

【redis】什么是持久化之 RDB

什么是持久化 MySQL 的事务&#xff0c;有四个比较核心的特性&#xff1a; 原子性一致性持久性>持久化&#xff08;说的一回事&#xff09; 把数据存储在硬盘上>持久把数据存在内存上>不持久重启进程/重启主机之后&#xff0c;数据是否还存在 隔离性 Redis 是一个内存…

Python、MATLAB和PPT完成数学建模竞赛中的地图绘制

参加数学建模比赛时&#xff0c;很多题目——诸如统计类、数据挖掘类、环保类、建议类的题目总会涉及到地理相关的情景&#xff0c;往往要求我们制作与地图相关的可视化内容。如下图&#xff0c;这是21年亚太赛的那道塞罕坝的题目&#xff0c;期间涉及到温度、降水和森林覆盖率…

Python(冒泡排序、选择排序、插入法排序、快速排序,算法稳定性)

算法的稳定性 冒泡排序 # 冒泡排序 # 1 思想: 相邻位置两个元素比较, 前面的元素比后面的元素大则交换, 把最大的数给找到 # 经过一轮一轮的比较最终把序列给排序 # 2 关键点1: 两层for循环 外层循环控制多少轮 内层for循环控制比较次数 # 3 关键点2: 若遍历一遍没有数字…