topameng's profileQuake3 启示录PhotosBlogListsMore ![]() | Help |
|
|
May 20 顶点坐标变换转载请注明出处 http://topameng.spaces.live.com 2*zn/w 0 0 0 0 2*zn/h 0 0 0 0 zf/(zf-zn) 1 0 0 zn*zf/(zn-zf) 0 其次坐标一个点p(px,py,pz,1) 经过这个变化成为(x'pz,y'pz,z'pz,pz) dx 一直透视投影函数一直默认了中心点为[0,0] (摄像机坐标x,y). 如果视景截头体不以[0,0]为中心则需要自己生成投影矩阵。 2*zn/r-l 0 0 0 0 2*zn/t-b 0 0 r+l/r-l t+b/t-b zf/(zf-zn) 1 0 0 zn*zf/(zn-zf) 0
May 14 编译 Nvidia Sdk出现Incorrect version of Direct3D and/or D3DX 错误 May 13 何为引擎?最早的概念差不多来自ID吧,quake.exe 就是引擎。而客户端只是玩法逻辑部分,现在随着时代发展似乎在悄悄的变化。很多引擎现在只提供库,并没有winmain函数。而很多人认为winmain属于客户端的范畴。 April 25 The MDX file format 1不好搜到了。备份一份在blog //+----------------------------------------------------------------------------- //+----------------------------------------------------------------------------- InclusiveSize - InclusiveSize is the size of the structure including ExclusiveSize - ExclusiveSize is the size of the structure *NOT* {X}; - A structure that may or may not be present. They X; - A structure that must be present and in the #X - A flag value, more than one can be combined. //+----------------------------------------------------------------------------- - Some ID's (GeosetId, etc...) can use the special value 0xFFFFFFFF to - All colors are stored as BGR, not RGB! //+----------------------------------------------------------------------------- {VersionChunk}; //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct TranslationTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct RotationTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct TranslationTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct TranslationTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct TranslationTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct TranslationTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct TranslationTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct TranslationTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) The MDX file format 2//+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- DWORD NrOfTracks; struct ScalingTrack[NrOfTracks] if(InterpolationType > 1) //+----------------------------------------------------------------------------- CHAR[80] Name; DWORD ObjectId; {GeosetTranslation} //+----------------------------------------------------------------------------- DWORD Version; //Currently 800 //+----------------------------------------------------------------------------- CHAR[80] Name; FLOAT BoundsRadius; //+----------------------------------------------------------------------------- struct Sequence[NrOfSequences] //NrOfSequences = ChunkSize / 132 DWORD IntervalStart; FLOAT BoundsRadius; //+----------------------------------------------------------------------------- struct GlobalSequence[NrOfGlobalSequences] //NrOfGlobalSequences = ChunkSize / 4 //+----------------------------------------------------------------------------- struct Texture[NrOfTextures] //NrOfTextures = ChunkSize / 268 CHAR[260] FileName; //+----------------------------------------------------------------------------- struct Layer[NrOfLayers] DWORD FilterMode; //0 - None DWORD ShadingFlags; //#1 - Unshaded DWORD TextureId; {MaterialAlpha} //+----------------------------------------------------------------------------- struct Material[NrOfMaterials] DWORD PriorityPlane; {LayerChunk} //+----------------------------------------------------------------------------- struct TextureAnimation[NrOfTextureAnimations] {TextureTranslation} //+----------------------------------------------------------------------------- struct Geoset[NrOfGeosets] DWORD 'VRTX'; struct VertexPosition[NrOfVertexPositions] DWORD 'NRMS'; struct VertexNormal[NrOfVertexNormals] DWORD 'PTYP'; struct FaceTypeGroup[NrOfFaceTypeGroups] DWORD 'PCNT'; struct FaceGroup[NrOfFaceGroups] DWORD 'PVTX'; struct Face[TotalNrOfFaces] //TotalNrOfFaces = TotalNrOfIndexes / 3 DWORD 'GNDX'; struct VertexGroup[NrOfVertexGroups] DWORD 'MTGC'; struct MatrixGroup[NrOfMatrixGroups] DWORD 'MATS'; struct MatrixIndex[NrOfMatrixIndexes] DWORD MaterialId; FLOAT BoundsRadius; DWORD NrOfExtents; struct Extent[NrOfExtents] DWORD 'UVAS'; DWORD 'UVBS'; struct VertexTexturePosition[NrOfVertexTexturePositions] //+----------------------------------------------------------------------------- struct GeosetAnimation[NrOfGeosetAnimations] FLOAT Alpha; DWORD GeosetId; {GeosetAlpha} //+----------------------------------------------------------------------------- struct Bone[NrOfBones] DWORD GeosetId; //+----------------------------------------------------------------------------- struct Light[NrOfLights] Node; DWORD Type; //0 - Omnidirectional {LightVisibility} //+----------------------------------------------------------------------------- struct Helper[NrOfHelpers] //+----------------------------------------------------------------------------- struct Attachment[NrOfAttachments] Node; CHAR[260] Path; {AttachmentVisibility} //+----------------------------------------------------------------------------- struct PivotPoint[NrOfPivotPoints] //NrOfPivotPoints = ChunkSize / 12 //+----------------------------------------------------------------------------- struct ParticleEmitter[NrOfParticleEmitters] Node; FLOAT EmissionRate; CHAR[260] SpawnModelFileName; FLOAT LifeSpan; {ParticleEmitterVisibility} //+----------------------------------------------------------------------------- struct ParticleEmitter2[NrOfParticleEmitters2] Node; FLOAT Speed; DWORD FilterMode; //0 - Blend DWORD Rows; FLOAT TailLength; FLOAT3[3] SegmentColor; DWORD HeadIntervalStart DWORD TextureId; {ParticleEmitter2Visibility} //+----------------------------------------------------------------------------- struct RibbonEmitter[NrOfRibbonEmitters] Node; FLOAT HeightAbove; DWORD TextureSlot; DWORD EmissionRate; {RibbonEmitterVisibility} //+----------------------------------------------------------------------------- DWORD GlobalSequenceId; struct Track[NrOfTracks] //+----------------------------------------------------------------------------- struct EventObject[NrOfEventObjects] {Tracks} //+----------------------------------------------------------------------------- struct Camera[NrOfCameras] CHAR[80] Name; FLOAT3 Position; {CameraPositionTranslation} //+----------------------------------------------------------------------------- struct CollisionShape[NrOfCollisionShapes] DWORD Type; //0 - Box //NrOfVertices = 2 (if Type == 0) if(Type == 2) |
|
|