[PATCH] d3dx9_36: Implement ID3DXSkinInfoImpl_UpdateSkinnedMesh.

Vijay Kiran Kamuju infyquest at gmail.com
Wed Apr 10 05:10:39 CDT 2019


On Tue, Apr 9, 2019 at 7:06 PM Matteo Bruni <matteo.mystral at gmail.com> wrote:
>
> On Sat, Apr 6, 2019 at 10:50 AM Vijay Kiran Kamuju <infyquest at gmail.com> wrote:
> >
> > This patch fixes last problem of bug 32572.
> > https://bugs.winehq.org/show_bug.cgi?id=32572
> >
> > From: Christian Costa <titan.costa at gmail.com>
> > Signed-off-by: Vijay Kiran Kamuju <infyquest at gmail.com>
> > ---
>
> There are many stylistic and practical issues with this patch which
> I'll not get into the details of. I'll point out just one:
>
> > +    /* Update positions that are influenced by bones */
> > +    for (i = 0; i < skin->num_bones; i++) {
> > +        D3DXMATRIX bone_inverse, matrix;
> > +
> > +        D3DXMatrixInverse(&bone_inverse, NULL, &skin->bones[i].transform);
> > +        D3DXMatrixMultiply(&matrix, &bone_transforms[i], &bone_inverse);
> > +        D3DXMatrixMultiply(&matrix, &matrix, &skin->bones[i].transform);

I will change the above code to like this
    for (i = 0; i < skin->num_bones; i++) {
/* need to copy the contents of bone_transforms using another loop may be */
        D3DXMATRIX matrix = bone_transforms[i];
        float det_bone;

        det_bone = D3DXMatrixDeterminant(&skin->bones[i].transform);
        D3DXMatrixScaling(&matrix, det_bone, det_bone, det_bone);
>
> This looks to me like a very expensive way of doing nothing.
I hope this is not expensive as far as I remember my Math, the above turns to
det(skin->bones[i].transform) * bone_transforms[i]



More information about the wine-devel mailing list