Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Как наложить текстуру на полигон
Глянь эту функцию , так у меня в ксорсе материалы накладываются.
Function LoadDeferredMesh( MeshPatch$,Shadows=0) ;DeMesh=xLoadMeshWithChild(MeshPatch$) DeMesh=xLoadAnimMesh(MeshPatch$) For ChiCo=0 To xCountChildren(DeMesh) DeChild=xGetChild(DeMesh,ChiCo) If DeChild<>0 DeSurfCou=xCountSurfaces(DeChild) For DeSurfSel=0 To DeSurfCou DeSurf=xGetSurface( DeChild, DeSurfSel ) If DeSurf<>0 SurfaceBrush=xGetSurfaceBrush(DeSurf) SurfaceBrushTexture=xGetBrushTexture(SurfaceBrush,0) SurfaceBrushTextureName$=xTextureName$(SurfaceBrushTexture) m.DeferredReciver= New DeferredReciver m\mesh=DeSurf m\ShadowsState=Shadows xSetSurfaceEffect DeSurf, DeferredMeshShader m\Surface=1 xSurfaceTechnique (DeSurf, "NormalMap",0);NormalMap DebugLog SurfaceBrushTexture+" "+SurfaceBrushTextureName$ If SurfaceBrushTexture=0 xSurfaceEffectTexture DeSurf,"tAlbedo",DefaultTexture,0,0 Else xSurfaceEffectTexture DeSurf,"tAlbedo",SurfaceBrushTexture ,0,0 EndIf If Instr(SurfaceBrushTextureName$,".JPG") Normals$=Replace$(SurfaceBrushTextureName$,".JPG","_N.JPG") Spec$=Replace$(SurfaceBrushTextureName$,".JPG","_S.JPG") Emi$=Replace$(SurfaceBrushTextureName$,".JPG","_B.JPG") EndIf If Instr(SurfaceBrushTextureName$,".PNG") Normals$=Replace$(SurfaceBrushTextureName$,".PNG","_N.PNG") Spec$=Replace$(SurfaceBrushTextureName$,".PNG","_S.PNG") Emi$=Replace$(SurfaceBrushTextureName$,".PNG","_B.PNG") EndIf If Instr(SurfaceBrushTextureName$,".TGA") Normals$=Replace$(SurfaceBrushTextureName$,".TGA","_N.TGA") Spec$=Replace$(SurfaceBrushTextureName$,".TGA","_S.TGA") Emi$=Replace$(SurfaceBrushTextureName$,".TGA","_B.TGA") EndIf If Instr(SurfaceBrushTextureName$,".DDS") Normals$=Replace$(SurfaceBrushTextureName$,".DDS","_N.DDS") Spec$=Replace$(SurfaceBrushTextureName$,".DDS","_S.DDS") Emi$=Replace$(SurfaceBrushTextureName$,".DDS","_B.DDS") EndIf NormSize=xFileSize(Normals$) SpecSize=xFileSize(Spec$) EmiSize=xFileSize(Emi$) If NormSize<>0 xSurfaceEffectTexture DeSurf,"tNormals",xLoadTexture(Normals$),0,0 Else xSurfaceEffectTexture DeSurf,"tNormals",DefaultNormal,0,0 EndIf If SpecSize<>0 xSurfaceEffectTexture DeSurf,"tSpecular",xLoadTexture(Spec$),0,0 Else xSurfaceEffectTexture DeSurf,"tSpecular",DefaultSpecular,0,0 EndIf If EmiSize<>0 xSurfaceEffectTexture DeSurf,"tBright",xLoadTexture(Emi$),0,0 Else xSurfaceEffectTexture DeSurf,"tBright",DefaultBright,0,0 EndIf EndIf Next EndIf Next Return DeMesh End Function
|