【100个Cocos实例】实现和平精英中3D模型渲染到2D界面的模型展示效果

这篇具有很好参考价值的文章主要介绍了【100个Cocos实例】实现和平精英中3D模型渲染到2D界面的模型展示效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【100个Cocos实例】实现和平精英中3D模型渲染到2D界面的模型展示效果,3d

引言

3D模型渲染到2D界面的模型展示效果

游戏开发中常常需要在UI界面显示一个3D模型,例如时装界面人物换装展示、Boss挑战界面选择Boss展示等等。

本文将介绍一下在Cocos游戏开发中实现和平精英3D模型渲染到2D界面的模型展示效果。

本文源工程在文末获取,小伙伴们自行前往。

本期知识点

1.RenderTexture

渲染贴图CameraCanvas 组件的渲染目标对象,渲染管线会使用它的 RenderWindow 作为渲染的目标窗口

我们可以把相机画面渲染到它上面,然后将精灵Sprite贴图资源设置成它。

【100个Cocos实例】实现和平精英中3D模型渲染到2D界面的模型展示效果,3d

2.Camera

渲染场景中的相机对象,由项目层的 Camera 管理。

我们可以通过它的targetTexture指定此相机的渲染输出目标贴图,默认为,直接渲染到屏幕

【100个Cocos实例】实现和平精英中3D模型渲染到2D界面的模型展示效果,3d

3.SpriteFrame

精灵帧资源。

我们通过SpriteFrametexture设置贴图对象资源,可以是 TextureBase 类型。

【100个Cocos实例】实现和平精英中3D模型渲染到2D界面的模型展示效果,3d

话不多说,一起来做个实例。

3D模型渲染到2D界面实例

接下来我们一步一步来实现和平精英3D模型渲染到2D界面的模型展示效果。

1.环境

引擎版本:Cocos Creator 3.8.1

编程语言:TypeScript

2.资源准备

创建一个新工程,笔者用3.8.2体验,大家用3.8.1打开项目即可

按照下面结构一下UIcocos背景图ModelSprite是渲染到的目标精灵Camera是拍模型的摄像机

【100个Cocos实例】实现和平精英中3D模型渲染到2D界面的模型展示效果,3d

然后把商城上的鸡带走并做成预制体借用一下。

【100个Cocos实例】实现和平精英中3D模型渲染到2D界面的模型展示效果,3d

3.编写代码

新建一个ModelRtt组件,并且ModelSprite上。其中包含几个属性。

  • modelUrl,模型的路径,直接通过resources.load加载。
  • modelOffsetY,模型的偏移,用于调整模型显示的位置。
  • orthoHeight,相机的正交视角高度,用于调整模型的大小。
  • modelSprite,目标精灵。
export class ModelRtt extends Component {
    @property(CCString)
    modelUrl: string = "";
    @property(CCFloat)
    modelOffsetY: number = 0;
    @property(CCFloat)
    orthoHeight: number = 0;
    modelSprite: Sprite = null;
}

然后编写loadPrefab方法通过resources.load加载模型。

loadPrefab() {
    if (!this.modelUrl || !this.modelSprite) {
        error('Please provide a valid prefab path and target sprite.');
        return;
    }

    resources.load(this.modelUrl, Prefab, (err, prefab) => {
        if (err) {
            error('Failed to load the prefab:', err);
            return;
        }

        this.createModel(prefab);
    });
}

最后通过以下步骤完成3D模型渲染到2D界面

  • 创建RenderTexture,大小建议5121024或者2048
const size = this.node.getComponent(UITransform).contentSize;
const modelRtt = new RenderTexture();
modelRtt.reset({
    width: size.width,
    height: size.height
});
  • 创建模型,并且设置偏移
const newNode = new Node();
newNode.parent = find("/");
const modelNode: Node = instantiate(prefab);
modelNode.parent = newNode;
modelNode.setPosition(new Vec3(0, this.modelOffsetY, 0));
  • 进行拖拽事件的监听实现模型转动
let flag = false;
this.node.on(NodeEventType.TOUCH_START, () => { flag = true; }, this);
this.node.on(NodeEventType.TOUCH_END, () => { flag = true; }, this);
this.node.on(NodeEventType.TOUCH_MOVE, (event: EventTouch) => {
    if (flag) {
        modelNode.eulerAngles = new Vec3(0, modelNode.eulerAngles.y + event.getDeltaX(), 0);
    }
}, this);
  • 获取我们在场景中创建的摄像机,并且设置一些相关参数。(这里面用动态添加Camera不会动态渲染,暂时不做研究)。
// const camera = new Node("Camera").addComponent(Camera); //todo:动态添加的Camera模型不会动 
const camera = this.node.getComponentInChildren(Camera);
camera.clearFlags = Camera.ClearFlag.SOLID_COLOR; //设置缓冲清楚标志位
camera.projection = renderer.scene.CameraProjection.ORTHO; //设置相机投影类型
camera.orthoHeight = this.orthoHeight; //设置正交视角高度
camera.clearColor = new Color(0, 0, 0, 0); //设置透明
camera.targetTexture = modelRtt; //设置目标RenderTexture
camera.node.parent = newNode;
camera.node.position = new Vec3(0, 0, 10);
  • 设置目标精灵的精灵帧
const spriteFrame = new SpriteFrame();
spriteFrame.texture = modelRtt;
spriteFrame.flipUVY = true;
this.modelSprite.spriteFrame = spriteFrame;

4.效果演示

【100个Cocos实例】实现和平精英中3D模型渲染到2D界面的模型展示效果,3d

今天的节目到此为止。帮忙转发一下文章哦,下课!

结语

本文源工程可通过私信发送CocosModelRTT获取。

更多实用源码已经上架Cocos Store,可以通过阅读原文看看,付费不仅是知识的获取,更是对笔者的支持和认可,感谢!

我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。

实不相瞒,想要个在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

推荐专栏:

你知道王者荣耀是怎么实现技能范围指示器的吗?

8年主程手把手打造Cocos独立游戏开发框架

和8年游戏主程一起学习设计模式

从零开始开发贪吃蛇小游戏到上线系列文章来源地址https://www.toymoban.com/news/detail-751709.html

到了这里,关于【100个Cocos实例】实现和平精英中3D模型渲染到2D界面的模型展示效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【用unity实现100个游戏之4】手搓一个网格放置功能,及装修建造种植功能(2d3d通用,附源码)

    参考原视频链接 【视频】:https://www.youtube.com/watch?v=l0emsAHIBjU 注意 :本文为学习笔记记录,推荐支持原作者,去看原视频自己手敲代码理解更加深入

    2024年02月13日
    浏览(43)
  • 3D数据过滤为2D数据集并渲染

    开发环境 : Windows 11 家庭中文版 Microsoft Visual Studio Community 2019 VTK-9.3.0.rc0 vtk-example 参考代码 代码逻辑:初始化数据集points - 添加数据集到polydata - 通过vtkVertexGlyphFilter过滤(带顶点、单元数据)polydata为顶点数据 - 添加过滤后2D数据到vtkPolyDataMapper2D - 添加到vtkActor2D Actor2D:

    2024年02月06日
    浏览(33)
  • 超大模型如何实现3D WEB轻量化渲染?

    Hoops Communicator是Tech Soft 3D旗下的主流产品之一,具有强大的、专用的高性能图形内核,专注于基于Web的高级3D工程应用程序。其由HOOPS Server和HOOPS Web Viewer两大部分组成,提供了HOOPS中的HOOPS Convertrer、Data Authoring的模型转换和编辑工具,采用了先进的流式加载方式,并支持服务

    2024年02月16日
    浏览(43)
  • Cocos2d-x实现文字颜色渐变

    更改CCLabel文件的updateColor()函数中的顶点颜色即可,代码如下: 效果图:  

    2024年02月12日
    浏览(43)
  • Cocos creator(2d) 使用 shader + uv 实现单张图片衔接滚动效果

    在游戏中,当我们需要让背景图片无缝衔接无限滚动时(打飞机这种背景一直滚动,或者肉鸽游戏地图一直在走等等),通常的做法是 在游戏中放两个背景node,在update中控制这两张背景图片的移动,并让其收尾衔接即可。(具体代码忽略) 可是在肉鸽类游戏中,玩家的走向是全方

    2024年02月13日
    浏览(114)
  • 3D Web轻量引擎HOOPS Communicator如何实现对大模型的渲染支持?

    除了读取轻松外,HOOPS Communicator对超大模型的支持效果也非常好,它可以支持30GB的包含70万个零件和3.5亿个三角面的Catia装配模型! 那么它是如何来实现对大模型的支持呢? 我们将从以下几个方面与大家分享:最低帧率控制、增量更新、截流等级、边界预览、内存限制以及破

    2024年02月04日
    浏览(51)
  • cocos creator新手教程:第003节3D模型的基本概念

    3.1 计算机如何制作一个3D模型 讲述这个问题之前,我们先来看下现实生活中我们要做一个模型,应该如何做呢?首先我们要把模型的形状给雕刻构建出来,现实生活中的物体都是由分子组成的连续的表面,计算机是离散的无法做到这点,所以计算机通过微分的方式,把一个曲

    2024年02月03日
    浏览(41)
  • 【Unity】GPU骨骼 GPU Spine动画 2D/3D渲染性能开挂 合批渲染 支持武器挂载 动画事件 动画融合 实时获取骨骼位置

     GPU 3D骨骼动画和 GPU 2D Spine动画插件均包含在【万人同屏整合方案】中,老板们可在某宝搜:[游戏开发资源商店] 以获取全套方案的所有源码插件。   万人同屏渲染避障锁敌方案实现对抗战斗demo 展示GPU动画高级功能 动画事件 动画平滑过渡 融合   插件功能: 1. 支持3D动画

    2024年02月22日
    浏览(48)
  • 汽车制造如何WEB端模型渲染轻量化?3D Web轻量化引擎HOOPS帮你实现!

    随着科技的迅猛发展,汽车制造领域不断迎来新领域的变革。其中,3D技术在汽车设计和制造中扮演着越来越重要的角色。而在这之中,3D Web轻量化引擎HOOPS正渐进的RGB露头角,为汽车制造提供了更加、便捷的解决方案。 本文将深入探讨HOOPS在汽车制造领域的应用,从技术特点

    2024年02月19日
    浏览(60)
  • 更有效地将2D图像转换成3D场景 – 在Adreno GPU上使用Vulkan进行Mobile Nerf渲染

    Snapdragon 和 Qualcomm 品牌产品是 Qualcomm Technologies, Inc. 和 /或其子公司的产品。 假设您刚刚度假回来,带回来几十张从不同角度拍摄的埃菲尔铁塔、泰姬陵或米开朗基罗大卫的照片。如果您希望再“虚拟地”逛一逛这些景点,该怎么办呢?这需要拼接所有的 2D 图像,创建一个

    2024年04月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包