元宇宙虚拟空间的场景渲染(五)

前言

该文章主要讲元宇宙虚拟空间的场景渲染,基本核心技术点,不多说,直接引入正题。


场景渲染

下面第二个图中的代码是一个循环渲染逻辑,首先getDelta 获取2次时间的时间间隔,requestAnimationFrame请求我们的一个动画帧重复调用一下渲染(我们看到的预览器看似静态,但其实每秒有很多次的刷新,而requestAnimationFrame会卡在那一帧去执行一次),然后是获取每一步的时间,unscaledTimeStep是不成比例的时间步长(拿到的是上一帧最后一刻的时间和当前帧的时间和渲染代码运行时间,也就是unscaledTimeStep=下一帧的时间+物理时间更新代码时间+代码渲染运行的时间

),9b14c72d058443f9a878cbba61a5984e.png

timeStep是时间步长(不成比例的时间步长*时间比例),然后是timeStep每一步时间的最小值为30帧(如果太小会出现一个卡帧效果会影响虚拟角色的走路效果),接着是物理世界的更新,logicDelta物理更新代码的时间,sinceLastFrame是按照帧率的一个时间差,stats监听使用状态的一个情况,后面是个判断是否开启一个FXAA的抗锯齿,否则正常渲染加上我们的摄像机

public render(world: World): void

    {

        this.requestDelta = this.clock.getDelta();

 

        requestAnimationFrame(() =>

        {

            world.render(world);

        });

 

        //获取每一步的时间

        let unscaledTimeStep = (this.requestDelta + this.renderDelta + this.logicDelta) ;

        let timeStep = unscaledTimeStep * this.params.Time_Scale;

        timeStep = Math.min(timeStep, 1 / 30);    

 

        //物理世界的更新

        world.update(timeStep, unscaledTimeStep);

 

       

        this.logicDelta = this.clock.getDelta();

        //按照帧率的时间

        let interval = 1 / 60;

        this.sinceLastFrame += this.requestDelta + this.renderDelta + this.logicDelta;

        this.sinceLastFrame %= interval;

       

        this.stats.end();

        this.stats.begin();

 

        if (this.params.FXAA) this.composer.render();

        else this.renderer.render(this.graphicsWorld, this.camera);

 

        this.renderDelta = this.clock.getDelta();

    }

 

 

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

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

相关文章

ICLR 2024 | 联邦学习后门攻击的模型关键层

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 联邦学习使多个参与方可以在数据隐私得到保护的情况下训练机器学习模型。但是由于服务器无法…

感染了后缀为.jayy勒索病毒如何应对?数据能够恢复吗?

导言: 在当今数字化的世界中,网络安全已经成为了每个人都需要关注的重要议题。而勒索病毒作为网络安全领域中的一大威胁,不断地演变和升级,给个人和组织带来了严重的损失和困扰。近期,一种名为.jayy的勒索病毒引起了广…

docker笔记(一):安装、常用命令

一、docker概述 1.1docker为什么会出现 各种环境配置十分繁琐,每一个机器都需要配置环境,难免出现各种问题。 发布一个项目jar需要配置(MySQL、redis、jdk、…),项目不能都带上环境安装打包: 传统&…

第十四届蓝桥杯物联网试题(省赛)

这个题还是有点难度的,刚好能做完,还遇到一个意料之外的BUG,这次算是失败了,因为那个BUG让我以为是板子坏了其实是我LORA没初始化 储存信息用结构体存储 第一次写结构体能一次实验成功也挺开心的 值得赞扬的是我这样排版的好处是所有变量都在…

Godot 4 教程《勇者传说》依赖注入 学习笔记(1):相机使用

文章目录 相关地址扩大场景添加相机相机拖动相机平滑相机限制不进行限制进行限制左边轴移动,得到坐标填入坐标限制平滑 相关地址 十分钟制作横版动作游戏|Godot 4 教程《勇者传说》#0 人物素材 环境素材 Gclove2000/GodotNet_LegendOfPaladin 扩大场景 …

【JAVASE】带你了解面向对象三大特性之一(继承)

✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:再无B~U~G-CSDN博客 1.继承 1.1 为什么需要继承 Java 中使用类对现实世界中实体来…

【Unity每日一记】如何让Sprite精灵图集的背景图层变成透明,方便切割

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

Web CSS笔记3

一、边框弧度 使用它你就可以制作盒子边框圆角 border-radius:1个值四个圆角值相同2个值 第一个值为左上角与右下角,第二个值为右上角与左下角3个值第一个值为左上角, 第二个值为右上角和左下角,第三个值为右下角4个值 左上角,右…

2023年度总结:允许迷茫,破除迷茫;专注自身,把握当下

0、前言 📜为什么24年已经过了几个月,才提笔写这年度总结呢?毫不羞愧直问我的内心,其实就是懒罢了。直到前几天朋友看到了我去年写的总结,我自己点进那篇总结,完完整整的看了一遍,又翻看我23年…

嵌入式学习48-单片机1

51单片机—————8位单片机 裸机驱动 无系统 linux驱动 有系统 驱动-----反映硬件变化 MCU 微控器 MPU CPU GPU 图像处理 IDE 集成开发环境 peripheral 外设 SOC: system on chip P0:8bit——8个引脚 位运算 & …

Halcon的HWindowControl控件在C#WinForm中的使用介绍(包括绘制ROI)

Halcon的HSmartWindowControl控件在C#WinForm中的使用介绍(包括绘制ROI) 文章目录 Halcon的HSmartWindowControl控件在C#WinForm中的使用介绍(包括绘制ROI)一、 引入hSmartWindowControl控件二、 编写打开图像功能三、 编写绘制RO…

民治街道关工委举办清明祭先烈活动

2024年清明节来临之际,春光明媚,微风轻拂。在这样一个充满生机与希望的季节里,一场庄严肃穆的清明祭先烈活动在中国文化名人大营救纪念馆隆重举行。此次活动由深圳市龙华区民治街道关工委主办,民乐社区关工委与丹堤实验学校共同承…