re: 两篇讲述Skinned Mesh原理的文章 Bill Hsu 2011-01-04 18:12
@Rambler
最近在Android上写点3D试试
文笔真好,孔明要是生在电脑还没出现的年代应该也能混的不错。
@kongque
是程序挂了退出,觉得很莫名。
孔雀你可以试试看是不是也会这样。
@孔雀
我原来也这样试过,可以每次都会自己退出。有人说是必须要在OpenGL的渲染线程内操作才行,不过我不知到具体改怎么做。
请教一下,
如果想在OpenGL ES装载图片、模型资源之前显示一个Loading画面,应该怎么做?
NDK的Bug确实不少哇。。
我最近也在弄OpenGL ES(2.0),以后多多交流哈
re: IGame骨骼动画成功导出 Bill Hsu 2010-06-17 13:57
CY你好,我有個問題想和你討論一下,也是關於導出插件的。
能否加下我的QQ 503919698?
可不可以告訴我你的QQ是多少?
我试了楼主的代码,
会报错:error X4004: Program too complex..
为什们呢?
我的完整shader:
matrix WVPMatrix;
float4 quat[100];
float3 tran[100];
struct VS_INPUT
{
float3 Position : POSITION;
float3 Normal : NORMAL0;
float2 TexCoord0 : TEXCOORD0;
float4 Weights:TEXCOORD1;
float4 Indices:TEXCOORD2;
};
struct VS_OUTPUT
{
float4 Pos : POSITION;
float3 Diffuse : COLOR;
float2 Tex0 : TEXCOORD0;
};
float4x4 BuildFromTransRot( float3 translation, float4 rot )
{
float4 rotation = rot;
float xx = rotation.x * rotation.x * 2.0f, yy = rotation.y * rotation.y * 2.0f, zz = rotation.z * rotation.z * 2.0f;
float xy = rotation.x * rotation.y * 2.0f, zw = rotation.z * rotation.w * 2.0f, xz = rotation.x * rotation.z * 2.0f;
float yw = rotation.y * rotation.w * 2.0f, yz = rotation.y * rotation.z * 2.0f, xw = rotation.x * rotation.w * 2.0f;
float4x4 m = {
{1.0f - yy - zz, xy + zw, xz - yw, 0},
{xy - zw, 1.0f - xx - zz, yz + xw, 0},
{xz + yw, yz - xw, 1.0f - xx - yy, 0},
{translation.x, translation.y, translation.z, 1}
};
return m;
}
float4x4 GetBoneElement( float index )
{
return BuildFromTransRot(tran[index], quat[index] );
}
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT Out = (VS_OUTPUT)0;
float4x4 skinTransform = 0;
skinTransform += GetBoneElement(input.Indices.x) * input.Weights.x;
skinTransform += GetBoneElement(input.Indices.y) * input.Weights.y;
skinTransform += GetBoneElement(input.Indices.z) * input.Weights.z;
skinTransform += GetBoneElement(input.Indices.w) * input.Weights.w;
float4 localpos = mul(input.Position, skinTransform);
Out.Pos = mul( localpos, WVPMatrix );
Out.Tex0 = input.TexCoord0;
return Out;
}
re: Soket类自封装的实现 Bill Hsu 2010-05-09 12:08
谢谢分享,
ps:
LZ标题写错了Soket->Socket
re: IGame骨骼动画成功导出 Bill Hsu 2010-05-01 10:26
我写的导出插件在导出四元数时和max给的那个例子导出的不一样,不知道是怎么回事:
数值一样,但正负号有时候不一样,有时一样。。
【都是在D3D坐标系下】
@陈昱(CY)
好像float3也会被转换成float4
谢谢分享,好文
可是我看到某个shader代码里有这样一句:
uniform mat4 boneMat[96];
那个最大50个骨骼的限制是怎么算出来的呢?
还有这种方法没有考虑scale,所以需要3个float4才可以。。。