re: 兩篇講述Skinned Mesh原理的文章 Bill Hsu 2011-01-04 18:12
@Rambler
最近在Android上寫點3D試試
文筆真好,孔明要是生在電腦還沒出現(xiàn)的年代應該也能混的不錯。
@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類自封裝的實現(xiàn) Bill Hsu 2010-05-09 12:08
謝謝分享,
ps:
LZ標題寫錯了Soket->Socket
re: IGame骨骼動畫成功導出 Bill Hsu 2010-05-01 10:26
我寫的導出插件在導出四元數(shù)時和max給的那個例子導出的不一樣,不知道是怎么回事:
數(shù)值一樣,但正負號有時候不一樣,有時一樣。。
【都是在D3D坐標系下】
@陳昱(CY)
好像float3也會被轉換成float4
謝謝分享,好文
可是我看到某個shader代碼里有這樣一句:
uniform mat4 boneMat[96];
那個最大50個骨骼的限制是怎么算出來的呢?
還有這種方法沒有考慮scale,所以需要3個float4才可以。。。