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

前言

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


场景渲染

下面第二个图中的代码是一个循环渲染逻辑,首先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();

    }

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++模版简单认识与使用

目录 前言: 1.泛型编程 2.函数模版 3.类模版 为什么要有类模版?使用typedef不行吗? 类模版只能显示实例化: 注意类名与类型的区别: 注意类模版最好不要声明和定义分离: 总结: 前言&…

RobotFramework测试框架(13)--扩展RF

扩展RF 可以写Python库 Static Library 静态库中RF的关键字被定义为python的方法。 Static Library With a Class 将Python类导入为Library,则类中的方法可以是关键字。 class DemoLibrary:def __init__(self, *args, **kwargs):print(f"Sample Library …

008 CSS盒子模型

文章目录 盒子模型内容-宽度和高度内边距-padding边框-border圆角-border-radius 外边距-margin上下margin的传递上下margin的折叠块级元素的水平居中行内级元素(包括inline-block元素)的水平居中 外轮廓-outline盒子阴影-box-shadow文字阴影-text-shadow行内非替换元素的特殊性…

代码随想录算法训练营第三十二天| LeetCode 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

一、LeetCode 122.买卖股票的最佳时机II 题目链接/文章讲解/视频讲解:https://programmercarl.com/0122.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BAII.html 状态:已解决 1.思路 这题的核心思路是:…

Python爬虫-爬取药膳食谱数据

🎈 博主:一只程序猿子 🎈 博客主页:一只程序猿子 博客主页 🎈 个人介绍:爱好(bushi)编程! 🎈 创作不易:喜欢的话麻烦您点个👍和⭐! 🎈…

第二十五周代码(蓝桥杯查缺补漏)

2024/03/31 周日 填充 题目链接 【参考代码】 想用暴力&#xff0c;没过 //枚举&#xff0c;未出结果QAQ #include <bits/stdc.h> using namespace std; string s00 "00"; string s11 "11"; int ans 0; //m个问号&#xff0c;子串有2^m…

C#探索之路基础夯实篇(4):UML类图中的六种关系详细说明

文章目录 UML类图中的关系前景1、关联关系&#xff08;Association&#xff09;&#xff1a;2、聚合关系&#xff08;Aggregation&#xff09;&#xff1a;3、组合关系&#xff08;Composition&#xff09;&#xff1a;4、泛化关系&#xff08;Generalization&#xff09;&…

计算机网络——37认证

认证 目标&#xff1a;Bob需要Alice证明他的身份 Protocol ap1.0&#xff1a;Alice说"A am Alice" 可能出现的问题&#xff1a; 在网络上Bob看不到Alice&#xff0c;因此Trudy可以简单的声称他是Alice 认证&#xff1a;重新尝试 Protocol ap2.0&#xff1a;Alice…

12.自定义的多帧缓存架构

1.简介 在数字图像处理中&#xff0c;经常需要用到的一个架构就是多帧缓存。视频流中需要用到多帧缓存来防止帧撕裂现象&#xff0c;图像处理中也需要帧差法来做移动目标检测。因此一个多帧缓存架构在图像系统的设计中是十分重要的。 2.多帧缓存 在视频流中&#xff0c;通常不…

数据库 06-03 时间戳

01.什么是时间戳 “时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 02.用时间戳实现调度 定义 数据库给予一个事务一个时…

用友U9 存在PatchFile.asmx接口任意文件上传漏洞

声明&#xff1a; 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 简介 用友U9是由中国用友软件股份有限公司开发的一款企业…

前端学习笔记:display(未完成)

这是本人学习的总结&#xff0c;主要学习资料如下 目录 1、一般属性2、flex系列2.1、flex容器的维度2.2、flex其他的关联属性 – 1、一般属性 display是css中的一个重要属性&#xff0c;它的值基本决定了元素的布局。这里就对它的值如何影响元素布局做一个总结。 display:bl…

STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (e)

接上文&#xff0c;继续来看这个函数&#xff1a; /*** brief Initializes the GPIOx peripheral according to the specified* parameters in the GPIO_InitStruct.* param GPIOx: where x can be (A..G) to select the GPIO peripheral.* param GPIO_InitStruct:…

【环境变量】常见的环境变量 | 相关指令 | 环境变量系统程序的结合理解

目录 常见的环境变量 HOME PWD SHELL HISTSIZE 环境变量相关的指令 echo&env export unset 本地变量 环境变量整体理解 程序现象_代码查看环境变量 整体理解 环境变量表 环境变量表的传递 环境变量表的查看 测试验证 少说废话&#x1f197; 每个用户…

JavaScript 设计模式之代理模式

代理模式&#xff0c;代理&#xff08;proxy&#xff09;是一个对象&#xff0c;它可以用来控制对另一个对象的访问。 现在页面上有一个香港回归最想听的金典曲目列表&#xff1a; <ul id"container"><li>我的中国心</li><li>东方之珠<…

C# 使用共享文件生成项目

项目文件中添加共享文件 <ItemGroup><Compile Include"..\Shared\Interfaces\Services\ITextService.cs" Link"Interfaces\Services\ITextService.cs" /><Compile Include"..\Shared\Services\TextService.cs" Link"Service…

C++高频面试知识总结 part2

C高频面试 1.sizeof是什么&#xff1f;sizeof一个class大小怎么确定&#xff1f;是在编译期还是在运行期确定?2.函数重载的机制&#xff0c;重载是在编译期还是在运行期确定&#xff0c;重载有额外开销吗3.函数重写在编译还是运行时确定&#xff1f;4.如何找到虚函数表&#x…

【数据结构与算法】力扣 24. 两两交换链表中的节点

题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a; head [1,2,3,4] 输出&#…

go | gin 重定向路由重定向

web 重定向 重定向有一点要注意&#xff0c;重定向是在客户端那边执行的&#xff0c;一次服务器只能响应一次请求。但是要注意路由重定向 路由重定向是在服务器内部完成重定向资源请求 package mainimport ("github.com/gin-gonic/gin""fmt" )/* func main…

C语言自定义类型变量——枚举(enum)

一.枚举的定义和声明 字面意思&#xff0c;枚举就是一一列举&#xff0c;把可能的取值一一列举&#xff0c;在我们现实生活中有许多可以列举的事物&#xff0c;例如&#xff1a;一周七天&#xff0c;一年四季&#xff0c;性别&#xff0c;月份&#xff0c;三原色等等。当我们需…