当前位置:网站首页>Ozzanation - système d'action basé sur sse
Ozzanation - système d'action basé sur sse
2022-06-12 02:02:00 【Vt Li】
Introduction:
ozzanimationEst d'utilisersseC'est - à - dire avecsimdTraitement sous forme d'instruction unique et de données multiplesanimationChangement de mouvement、Convertir les coordonnées etikLa façon dont les choses sont traitées.Peut être plus rapide que la transformation matricielle directe traditionnelle.
sample_additive.ccEst l'exemple le plus simple

Initialisation
OnInitializeInitialisation,LoadSkeletonCharger les os,LoadAnimationCharger l'animation,context_.ResizePour déterminer la taille de l'échelle de rotation de la traduction,locals_.resizeDéterminer la taille des données pour l'espace local,models_.resizeDéterminer la taille des données dans l'espace Modèle,blended_locals_.resizeDéterminer la taille du mélange spatial local.
simdMise à jour de la matrice d'action
Le noyauOnUpdateAnimation en,controller_.UpdateDéfinir le rapport des actions de lectureratio,Adoptionozz::animation::SamplingJobPour définir les données d'action et spécifier la sortie verslocals_.Adoptionsampling_job.RunPour effectuer l'échantillonnage des données d'action,UpdateCacheCursor Est l'emplacement du pointeur pour mettre à jour le cache ,Et puisUpdateInterpKeyframes Est d'obtenir une valeur numérique spécifique par l'index de la position du pointeur , Puis PAN et zoom passent par DecompressFloat3Pour obtenirsimdValeur calculée, L'échelle est Quaternion, donc DecompressQuaternion.
Après avoir obtenu les données de la rotation de l'échelle de traduction ,InterpolatesPour interpoler, L'interpolation passe aussi par simdPour l'exécuter..Produit final versoutput.
Tout ce qui précèdeSamplingJob Ce qui est fait dans .
Mélanger:
Ensuite, s'il y a plusieurs niveaux de mélange ozz::animation::BlendingJob::Layer Obtenir les données de la couche ,Et puisozz::animation::BlendingJobPour mélanger,InBlendingJob::Run()Moyenne

D'abordBlendLayers, Il a deux façons de se mélanger , Un mélange unidimensionnel ,Exécution directeOZZ_BLEND_1ST_PASS, L'autre est multidimensionnelle OZZ_BLEND_N_PASS.
Et puisBlendRestPose, Ici, si le poids cumulé est inférieur au seuil , Mélanger la pose de repos à la sortie .
Et puisNormalize, Rotation de sortie normalisée . La longueur Quaternion ne peut pas être nulle , Parce que pendant le mélange , La longueur relative du Quaternion est fixée . La traduction et l'échelle ont été normalisées , Parce que les poids ont été pré - multipliés par le rapport normalisé .
Et puisAddLayers, Il s'agit de savoir si chaque couche doit être ajoutée au mélange , Ou supprimer le mélange .
Enfin, il faut l'exécuter ozz::animation::LocalToModelJob Pour convertir en espace Modèle ,
Puis il est affiché dansOnDisplayAdoptiongl Pour montrer un modèle ou un os ,shaderLe Code est écrit directement dans

Dans ces classes, .
Les opérations cutanées connexes, etc., sont des méthodes traditionnelles .
Version multithreadée:
sample_multithread.ccMoyenneParallelUpdate Est l'acte d'exécuter un rôle de mise à jour ,grain_size Combien d'objets sont traités en parallèle , Si la quantité est dépassée, passer std::async Choisissez une approche asynchrone std::launch::async, Il va exécuter sur un autre fil .ParallelUpdate.

Et puisUpdateCharacterMoyen ou moyensimdMise en œuvreSamplingJobEtLocalToModelJob.
边栏推荐
- [从零开始学习FPGA编程-20]:快速入门篇 - 操作步骤4-2-Altera Quartus II工具的快速使用(modelSim联合仿真、程序下载到Altera开发板)
- Linux (centos7) installer mysql - 5.7
- php安全开发 12博客系统的 系统模块信息的修改
- PyGame alien invasion
- SQL calculates KS, AUC, IV, psi and other risk control model indicators
- [untitled]
- Wechat applet - a case of comparing the size of numbers
- [learn FPGA programming from scratch -20]: quick start chapter - operation steps 4-2-quick use of Altera quartz II tool (Modelsim co simulation, program download to altera development board)
- 小程序111111
- Why should a redis cluster use a reverse proxy? Just read this one
猜你喜欢

Redis实现消息队列的4种方案

Software engineering - system flow chart

2022最全面的Redis事务控制(带图讲解)

In 2022, the internal promotion of the "MIHA Tour" golden, silver and silver social recruitment started in April and march! Less overtime, good welfare, 200+ posts for you to choose, come and see!

Operating mechanism of Google ads bidding

Don't miss it! Five large data visualization screens that HR must collect

MySQL advanced knowledge points

How to access the traifik proxy dashboard using the rancher desktop

Ozzanmation action system based on SSE

Smartbi helps you solve the problem of losing high-value customers
随机推荐
What are the preparations for setting up Google search advertising series?
leetcodeSQL:612. Nearest distance on plane
Leetcode 45 jump game II
How to improve the advertising rating of advertising, that is, the quality score?
Software engineering course: Chapter 2 software problem definition and feasibility analysis after class exercises
Is the bidding price fixed for each click?
Google Ads 的优势
MySQL advanced knowledge points
Introduction to prism framework - Modular introduction
PyGame alien invasion
初探性能优化!从2个月到4小时的性能提升!
国资入股,建业地产这回稳了吗?
websocket 切后台10秒后 关闭掉了
[C language] summary of basic knowledge points of pointer
Google 搜索广告系列设置前有哪些准备工作?
matplotlib. pyplot. Bar chart (II)
Why do we use Google search ads?
联调这夜,我把同事打了...
"Xilin chain" of Southwest Forestry University passed the functional test of Electronic Standards Institute of the Ministry of industry and information technology | FISCO bcos case
Leetcode 55 jump game