当前位置:网站首页>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.
边栏推荐
- Knowledge points of mall development
- C language programming classic games - minesweeping
- LeetCode Algorithm 997. Find the town judge
- “中国东信杯”广西大学第四届程序设计竞赛(同步赛)
- Redis實現消息隊列的4種方案
- Leetcode 45 jump game II
- How to locate keywords to make advertising accurate.
- Annotate your own point cloud dataset with labelcloud open source tool as a tutorial of Kitti annotation format (support PCD and bin point clouds)
- 国资入股,建业地产这回稳了吗?
- Software engineering course: Chapter 2 software problem definition and feasibility analysis after class exercises
猜你喜欢

The release of star ring kundb 2.2 provides a new choice for business systems with high concurrent transactions and queries

On the night of the joint commissioning, I beat up my colleagues

BaseDexClassLoader那些事

How to stop anti-virus software from blocking a web page? Take gdata as an example

Glfwpollevents() program crash

ozzanimation-基于sse的动作系统

Knowledge points of mall development

Smartbi helps you solve the problem of losing high-value customers

php开发 博客系统的公告模块的建立和引入

Don't write about the full screen explosion, try the decorator mode, this is the elegant way!!
随机推荐
Design practice of rongyun Im on electron platform
Point cloud perception algorithm interview knowledge points (I)
"China Dongxin Cup" the fourth programming competition of Guangxi University (synchronous competition)
LeetCode Algorithm 997. Find the town judge
联调这夜,我把同事打了...
如何让杀毒软件停止屏蔽某个网页?以GDATA为例
websocket 切后台10秒后 关闭掉了
The resignation of the chief oracle engineer was furious: MySQL is a terrible database, so it is recommended to consider PostgreSQL!
如何最大化的利用各种匹配方式? ——Google SEM
LeetCode Algorithm 997. 找到小镇的法官
初探性能优化!从2个月到4小时的性能提升!
Installing MySQL version 5.5 database for Linux (centos6)
Graphic data analysis | business cognition and data exploration
What are the preparations for setting up Google search advertising series?
大一下期:学习总结
C asynchronous programming from simple to deep (III) details awaiter
LeetCode LCP 07. 传递信息
西南林业大学“西林链”通过工信部电子标准院功能测试 | FISCO BCOS案例
[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)
Three line code solution - Maximum sub segment and - DP