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

news2025/3/20 19:04:03

在 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.coloradmin.cn/o/2318537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自然语言处理:文本聚类

介绍 大家好,博主又来和大家分享自然语言处理领域的知识了。今天给大家分享的内容是自然语言处理中的文本聚类。 文本聚类在自然语言处理领域占据着重要地位,它能将大量无序的文本按照内容的相似性自动划分成不同的类别,极大地提高了文本处…

RabbitMQ 集群降配

这里写自定义目录标题 摘要检查状态1. 检查 RabbitMQ 服务状态2. 检查 RabbitMQ 端口监听3. 检查 RabbitMQ 管理插件是否启用4. 检查开机自启状态5. 确认集群高可用性6. 检查使用该集群的服务是否做了断开重连 实操1. 负载均衡配置2. 逐个节点降配(滚动操作&#xf…

数据结构:二叉树(一)·(重点)

前言 什么树?what? 树的概念与结构 概念: 树是⼀种⾮线性的数据结构,它是由 n ( n>0 ) 个有限结点组成⼀个具有层次关系的集合。 结构: 有⼀个特殊的结点,称为根结点&#…

DevEco Studio的使用

目录 1.创建ArkTS工程 2.ArkTS工程目录结构(Stage模型) 构建第一个页面 构建第二个页面 实现页面间的跳转 1.创建ArkTS工程 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择…

数据开发岗笔试题>>sql(hive) ,excel [2025]

sql SELECT user_id, AVG(loan_amount) AS avg_loan_amount FROM loan GROUP BY user_id HAVING AVG(loan_amount) > 20000; 授信表:credit 字段包含user_id(用户id),credit_id(授信id),credit_time(授信时间yyyy-MM-dd HH:mm:ss)&#x…

OpenGL ES 入门指南:从基础到实战

引言:为什么需要 OpenGL ES? 在当今的嵌入式设备(如智能手机、汽车仪表盘、智能家居中控屏)中,流畅的图形渲染能力是用户体验的核心。OpenGL ES(OpenGL for Embedded Systems) 作为行业标准&am…

docker安装milvus向量数据库Attu可视化界面

Docker 部署 Milvus 及 Attu 可视化工具完整指南 一、环境准备 安装 Docker 及 Docker Compose Docker 版本需 ≥20.10.12Docker Compose 版本需 ≥2.20.0(推荐 V2) 验证 Docker 环境 docker --version && docker-compose --version若出现&…

ArcGIS10. 8简介与安装,附下载地址

目录 ArcGIS10.8 1. 概述 2. 组成与功能 3. 10.8 特性 下载链接 安装步骤 1. 安装准备 2. 具体步骤 3.补丁 其他版本安装 ArcGIS10.8 1. 概述 ArcGIS 10.8 是由美国 Esri 公司精心研发的一款功能强大的地理信息系统(GIS)平台。其核心功能在于…

Idea中使用Git插件_合并当前分支到master分支_冲突解决_很简单---Git工作笔记005

由于之前用svn习惯了,用的git少,其实在idea中使用git,解决冲突,合并分支,非常的简单,一起来看一下吧. 一定要注意操作之前,一定要确保自己的分支代码,都已经commit提交了,并且push到远程了. 不要丢东西. 可以看到首先,在idea的左下角有个 git,点开以后 可以看到有显示的分支…

【Linux】应用层自定义协议 + 序列化和反序列化

应用层自定义协议 序列化和反序列化 一.应用层1.再谈 "协议"2.序列化 和 反序列化 二. Jsoncpp1.序列化2.反序列化 三. Tcp全双工 面向字节流四.自定义协议 保证报文的完整性1.Makefile2.Mutex.hpp3.Cond.hpp4.Log.hpp5.Thread.hpp6.ThreadPool.hpp7.Common.hpp8.…

Matlab 雷达导引头伺服系统的建模与仿真研究

1、内容简介 Matlab 177-雷达导引头伺服系统的建模与仿真研究 可以交流、咨询、答疑 2、内容说明 略[摘 要]基于 Malah/Simuink 雷达导引|头同服系统的建模与仿真,首先对雷达导引头同服系统按照预定回路和跟踪回路的步骤分别进行建模以及相关控制参数计算,接着构建…

华为ipd流程华为流程体系管理华为数字化转型流程数字化管理解决方案介绍81页精品PPT

华为流程体系最佳实践主要包括构建完善的流程框架,明确各层级流程要素与职责,梳理涵盖研发、采购、营销、服务、资产管理等多领域的流程,通过梳理业务场景和核心能力搭建差异化流程框架,采用自上而下与自下而上相结合的建模方法&a…

网络流基本概念及实现算法

基本概念 流网络 对于一个有向图, 抽象成水管里的水的模型, 每根管子有容量限制, 计为 G ( V , E ) G (V, E) G(V,E), 首先不考虑反向边 对于任意无向图, 都可以将反向边转化为上述形式 如果一条边不存在, 定义为容量为 0 0 0, 形式上来说就是 c ( u , v ) 0 c(u, v) 0 c(…

SpringBoot对接DeepSeek

文章目录 Spring Boot 集成 DeepSeek API 详细步骤1. 创建API Key1.访问 [DeepSeek控制台](https://platform.deepseek.com/usage) 并登录。2.点击 Create API Key 生成新密钥。3.复制并保存密钥(需在Spring Boot配置文件中使用)。 2. 创建Spring Boot工…

大语言模型的多垂类快速评估与 A/B 测试

简介 行业领先的模型构建企业携手澳鹏(Appen)开展了一项极具挑战性的项目。针对 3 至 6 个大型语言模型(LLM),在广泛的通用领域及复杂专业领域(如医疗保健、法律、金融、编程、数学和汽车行业等&#xff0…

RAGFlow + LlamaIndex 本地知识库RAG增强架构与实现直播智能复盘

一、需求分析与架构设计 基于 RAGFlow LlamaIndex 本地知识库RAG 扩展直播话术合规与复盘系统,需构建 实时流处理、多模态合规引擎、智能复盘分析 三层能力。以下是完整架构图与技术方案: 二、核心模块技术方案 1. 直播流实时处理(输入层→…

阿里云平台服务器操作以及发布静态项目

目录: 1、云服务器介绍2、云服务器界面3、发布静态项目1、启动nginx2、ngixn访问3、外网访问测试4、拷贝静态资源到nginx目录下并重启nginx 1、云服务器介绍 2、云服务器界面 实例详情:里面主要显示云服务的内外网地址以及一些启动/停止的操作。监控&…

【大模型实战篇】使用GPTQ量化QwQ-32B微调后的推理模型

1. 量化背景 之所以做量化,就是希望在现有的硬件条件下,提升性能。量化能将模型权重从高精度(如FP32)转换为低精度(如INT8/FP16),内存占用可减少50%~75%。低精度运算(如INT8&#xf…

基于springboot医疗平台系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 信息化时代,各行各业都以网络为基础飞速发展,而医疗服务行业的发展却进展缓慢,传统的医疗服务行业已经逐渐不满足民众的需求,有些还在以线下预约挂号的方式接待病人,为此设计一个医疗平台系统很有必要。此类系统…

Stable Diffusion lora训练(一)

一、不同维度的LoRA训练步数建议 2D风格训练 数据规模:建议20-50张高质量图片(分辨率≥10241024),覆盖多角度、多表情的平面风格。步数范围:总步数控制在1000-2000步,公式为 总步数 Repeat Image Epoch …