fby825 fby825
会点技术,好点艺术,好玩也好玩.
关注数: 36 粉丝数: 77 发帖数: 1,514 关注贴吧数: 149
#FlaxEngine教程# 将相机渲染到纹理 Flax Engine 提供了非常广泛的自定义功能,可以扩展渲染管道。其中之一是使用自定义摄像机直接渲染场景到渲染目标。然后将其显示在对象表面上。 在本教程中,您将学习如何实现画中画效果:创建材质 第一步是为 TV 对象创建专用材质。它将用于在表面上显示渲染的场景图片,以便玩家可以看到它。为此,请按照以下简单步骤作: 创建一个新的空材质并为其命名 TV Material (请参阅 Materials Basics 页面以了解如何作) 在 Material Editor 中打开它(双击资源)在 Properties Panel(属性面板)中向下滚动,从底部下拉菜单中选择 GPU Texture (GPU 纹理) 选项,然后按 Add parameter (添加参数) 按钮右键单击新创建的 New 参数,选择选项 Rename 并将其名称设置为 Image 右键单击 Surface 背景并创建 Get Parameter 节点(要了解有关创建节点的更多信息,请参见 Material Editor 页面)从该节点的下拉菜单中选择 Image 参数,并将其 Color 框与 Material Emissive 输入连接起来。保存材质资源 创建脚本 现在,您可以编写一个简单的脚本,该脚本将使用摄像机并将其渲染到纹理(也称为渲染目标)。 导航到项目的 Source/Game 目录,并创建名为 CameraTV 的新 C# 脚本打开脚本 编写以下代码并保存 using System;using FlaxEngine;public class CameraTV : Script{ public Camera Cam; public MaterialBase Material; [Limit(1, 2000)] public Float2 Resolution { get => _resolution; set { value = Float2.Clamp(value, new Float2(1), new Float2(2000)); if (_resolution != value) { _resolution = value; if (_output) { // Resize backbuffer UpdateOutput(); } } } } public float ViewDistance = 2000; private Float2 _resolution = new Float2(640, 374); private GPUTexture _output; private SceneRenderTask _task; private MaterialInstance _material; private void UpdateOutput() { var desc = GPUTextureDescription.New2D( (int)_resolution.X, (int)_resolution.Y, PixelFormat.R8G8B8A8_UNorm); _output.Init(ref desc); } public override void OnEnable() { // Create backbuffer if (_output == null) _output = new GPUTexture(); UpdateOutput(); // Create rendering task if (_task == null) _task = new SceneRenderTask(); _task.Order = -100; _task.Camera = Cam; _task.Output = _output; _task.ViewFlags = ViewFlags.Reflections | ViewFlags.Decals | ViewFlags.AO | ViewFlags.GI | ViewFlags.DirectionalLights | ViewFlags.PointLights | ViewFlags.SpotLights | ViewFlags.SkyLights | ViewFlags.Sky | ViewFlags.Shadows | ViewFlags.SpecularLight | ViewFlags.CustomPostProcess | ViewFlags.ToneMapping; _task.Enabled = false; if (Material && _material == null) { // Use dynamic material instance if (Material.WaitForLoaded()) throw new Exception("Failed to load material."); _material = Material.CreateVirtualInstance(); // Set render task output to draw on model _material.SetParameterValue("Image", _output); // Bind material to parent model if (Actor is StaticModel staticModel && staticModel.Model) { staticModel.Model.WaitForLoaded(); staticModel.SetMaterial(0, _material); } } _task.Enabled = true; } public override void OnUpdate() { // Optimize by disabling rendering if main game view is far too far var mainView = MainRenderTask.Instance.View; _task.Enabled = Vector3.Distance(Actor.Position, mainView.Origin + mainView.Position) <= ViewDistance; } public override void OnDisable() { // Unbind temporary material if (Actor is StaticModel staticModel && staticModel.Model && staticModel.Model.IsLoaded) staticModel.SetMaterial(0, Material); // Ensure to cleanup resources Destroy(ref _task); Destroy(ref _output); Destroy(ref _material); }}准备对象 最后一步是设置一个场景并将所有这些东西链接在一起。 创建新的 Camera 对象并将其放置在场景中 添加将呈现相机图像的对象。您可以从 Toolbox (工具箱) 窗口中使用 Cube 模型选择生成的对象,然后只需拖动它即可将 CameraTV 脚本添加到其中为脚本属性 Cam 和 Material 设置对摄像机和材质的引用。您还可以调整分辨率(以像素为单位)。点击播放并查看结果!
FlaxEngine常见问题解答 什么是 Flax Engine? Flax Engine 是用 C++ 和 C# 编写的高质量现代 3D 游戏引擎。从令人惊叹的图形到强大的脚本,它专为快速工作流程而设计,许多即用型功能现在正等着您。 我们的目标是创建业内最强大的游戏引擎,并为全球的创作者提供工具,以利用这种力量来创造世界一流的游戏体验,无论他们的预算或团队规模如何。 官方网站 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fflaxengine.com%2F&urlrefer=9e41fac0b651f789583593a5e2fae244 Flax 系统要求是什么? 您可以在 Flax 手册的 Requirements (要求) 页面上找到 Flax Engine 系统要求。 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fdocs.flaxengine.com%2Fmanual%2Fget-started%2Frequirements.html&urlrefer=ab9fdcb448293033bd57d8fd7f65269e 我可以在哪些平台上使用 Flax 制作应用程序? Flax 目前支持 Windows、Linux、Android、macOS、iOS、PlayStation 4、PlayStation 5、Xbox One。Xbox Series X/S 和 Switch。您可以在 Flax 手册的 Platforms 页面上找到更多信息。 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fdocs.flaxengine.com%2Fmanual%2Fplatforms%2Findex.html&urlrefer=9163b3967e6823dbfab48584b50846b8 是否有即将推出的 Flax 功能的路线图? 是的!您可以在此处找到 Flax 路线图。它每周更新一次。 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Ftrello.com%2Fb%2FNQjLXRCP%2Fflax-roadmap&urlrefer=cfccdc3678afa589f22044ba36b2cd71 亚麻是免费的吗? Flax 可免费用于非商业和教育用途。当您制作商业产品时,您必须为每季度超过 250000 美元的收入,支付 4% 的专利费。有关许可证的更多信息,请参阅此许可页面。 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fflaxengine.com%2Flicensing%2F&urlrefer=efcd981d223d5b4aaab0c200e96fa1c1 我可以创建视频或流并使用它们来产生 YouTube 广告收入或 Twitch 捐款吗? 是的。此收入不需支付特许权使用费。 我能否获得完整的引擎源(包括 C++ 核心)? 是的!它在 Github 上。http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fgithub.com%2FFlaxEngine%2FFlaxEngine&urlrefer=fefa199ed4bd54f2efbc8746cab0c5ec 我可以用 Flax Engine 发布哪些类型的产品? 您可以创建和发布法律允许的任何商品。您可以发布游戏、演示、VR 项目、建筑展示、预告片、电影等。 Flax Engine 唯一不能向公众发布的部分是源代码和工具或对它们的修改;这些组件只能分发给有权访问相同版本 Flax 引擎的其他被许可方。 发布产品时必须做什么? 您有义务在发布前通知 Flax,并在您的产品赚钱后通知收入。 有关 更多详细信息,请参阅此处。http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fflaxengine.com%2Frelease%2F&urlrefer=fdc8717fffcba7b2011d531bcd06bd4a 我必须支付哪些版税以及何时支付? 总的来说,无论公司收取的收入是多少,您都必须在每季度的前25万美元之后支付所有总收入的4%。 例如,如果您的产品在游戏商店的销售中获得100美元,那么应缴纳的特许权使用费为$ 4($ 100的4%),即使您大约会从商店所有者那里扣除大约30美元(30%的100美元)(示例价值)的分销费后,从商店所有者那里获得70美元。特许权使用费应在每个日历季度结束后45天到期。除了付款外,您必须以每个产品的基础发送特许权使用费报告。有关更多信息,请参见此处。http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fflaxengine.com%2Frelease%2F&urlrefer=fdc8717fffcba7b2011d531bcd06bd4a 可下载内容、应用内购买、微交易、虚拟货币兑换和订阅费用,以及应用内广告和联盟计划收入呢? 来自这些来源的收入包含在上述总收入计算中。 我必须在多长时间内报告版税? 当您每季度从产品中赚取超过 250,000 美元时,您才需要报告版税。如果您的游戏不再销售,或者不再赚取该金额,则无需支付版税报告。 如果我需要自定义许可条款,该怎么办? 如果您的项目需要专门的条款来减少或消除 4% 的专利费以换取预付费用,或者如果您需要自定义法律条款或专门的 Flax 支持来帮助您的团队降低风险或实现特定目标,我们随时为您提供帮助。有关详细信息,请参阅自定义许可页面。http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fflaxengine.com%2Fcustom-licensing%2F&urlrefer=e8119761965e700a1578617bb33d8f60 如果我的产品是通过出版商或分销商发布的,该怎么办? 您可以通过发行商或分销商自由发布 Flax Engine 产品,并且 EULA 赋予您将 Flax Engine 的必要部分再许可给他们的权利,以便他们可以发布您的游戏。 在与发行商协商条款时,请记住,在用户每季度每个游戏获得前 250,000 美元后,版税仍为产品总收入的 4%。在这种情况下,您可以在讨论期间随时将您的发布商推荐给 Flax,获得涵盖您的商品的定制协商的多产品 Flax Engine 许可,可能对所有发布商都有利。 如果我的项目获得现金奖励怎么办? 您不必为获奖支付版税。 如果我的产品通过 Kickstarter 或其他来源获得众筹怎么办? 当收入实际归因于您的产品时,来自 Kickstarter 或其他众筹来源的收入应支付版税。例如,如果用户需要购买特定的资金包才能(现在或以后)访问您的产品,或者该资源包为买家提供产品内的好处,例如游戏内物品或虚拟货币。 以下是我们所说的“可归因”的示例:假设您提供两个级别的优惠,一张 20 美元的签名海报,以及一张 50 美元的签名海报加游戏访问权限。海报等辅助产品无需支付专利费,因此 20 美元的套餐无需支付专利费。在 50 美元的套餐中,用户为价值 20 美元的海报付费,这意味着剩余的 30 美元价值归属于该产品。因此,对于每笔 50 美元的等级销售,您需要支付 1.2 美元的版税(4 美元的 30%)。 有哪些免版税选项? 您可以完全免费地将 Flax Engine 用于以下用途: 创建视频教程 教育用途(包括所有学术机构) 真正免费的游戏和应用程序(无相关收入) 非交互式线性媒体,包括电影、动画电影和作为视频分发的卡通。 游乐园游乐设施和现场装置。 使用该引擎的咨询和雇佣服务。这适用于使用引擎创建可视化的架构师以及收取开发费用的顾问。 商品商品,包括 T 恤、CD、毛绒玩具、可动人偶和书籍。包含嵌入数据或信息(如 QR 码)且会影响商品运行的商品除外。 我可以在线共享代码片段吗? Flax Engine 被许可方可以在公共论坛上发布引擎代码片段(最多 30 行),但仅限于讨论片段内容。 我如何为 Flax 做出贡献? 我们欢迎通过 GitHub 上的拉取请求(此处)对 Flax Engine 开发做出任何贡献。我们的大部分积极开发都在 master 分支中,因此我们更喜欢在那里接受拉取请求(特别是对于新功能)。我们尝试确保所有新代码都符合 Flax 编码标准。所有贡献均受 EULA 条款的约束。 如何将 Flax Engine 或 Flax Editor 代码更改提交回 Flax? 我们使用 Github 频道,以便越来越多的贡献者可以分叉和修改引擎代码的一部分。您在 GitHub 上签入的任何源代码更改都将对社区可见。 如果您向 Flax 提交拉取请求,我们将对其进行审核并考虑将您的代码包含在主线 Flax Engine 中。如果我们寄送了您的贡献,我们很乐意将您的名字添加到引擎的制作人员名单中。 我可以请求功能吗? 是的!将其发布在论坛上或通过联系表直接发送。http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fforum.flaxengine.com%2F&urlrefer=9a83d37fc2b2a0a18a34c72974429247 此外,请查看我们的公共路线图。http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Ftrello.com%2Fb%2FNQjLXRCP%2Fflax-roadmap&urlrefer=cfccdc3678afa589f22044ba36b2cd71 您有隐私政策吗? 是的,您可以在这里找到它:http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fflaxengine.com%2Fprivacy&urlrefer=b4a9e035c5fb0ef04b4299a9a804ab28。
1 下一页