forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Как наложить текстуру на полигон (http://forum.boolean.name/showthread.php?t=5534)

Arton 30.10.2014 16:46

Ответ: Как наложить текстуру на полигон
 
Цитата:

Сообщение от ABTOMAT (Сообщение 288778)
Вообще я бы посоветовал посмотреть в сторону LoadAnimMesh, он не объединяет в один Entity. Правда, не знаю, что там у него по поводу того, когда "одинаковые" браши находятся внутри одного Entity. Но в твоём случае ты сможешь самостоятельно всё объединить, при этом не растеряв браши.

У него абсолютно тоже самое.
16777439 вариантов кистей, это на один меш. Неважно где он будет, отдельно моделька или из дочерних сцены.

По этому есть резон заранее определить текстуры и настройки брашей и использовать во всех сценах.

Можно по совету Тормоза второй вариант попробовать (см. выше) но мне лень, раз работает так то и ладно :)

tirarex 30.10.2014 17:35

Ответ: Как наложить текстуру на полигон
 
Глянь эту функцию , так у меня в ксорсе материалы накладываются.

PHP код:

Function LoadDeferredMeshMeshPatch$,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
=xGetSurfaceDeChildDeSurfSel 
                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 


Arton 17.11.2014 22:55

Ответ: Как наложить текстуру на полигон
 
Вложений: 1
tirarex, у тебя текстуры с моделью в одной папке лежат?

У меня всё работает на хорсе пока не уберу текстуры.
Если текстуры в другой папке, находит браш, но не видит текстуру:
Вложение 21154

Весь смысл этой затеи был именно хранить модели отдельно от текстур.

Как узнать имя браша?

P. S. Нашёл в хорсе новую команду xGetSurfaceTexture, всё равно не помогло, текстуры как буд-то нет.
P. P. S. А почему вложение сейчас исчезло? Загрузил по новой.

tirarex 18.11.2014 09:31

Ответ: Как наложить текстуру на полигон
 
Цитата:

Сообщение от Arton (Сообщение 289459)
tirarex, у тебя текстуры с моделью в одной папке лежат?

У меня всё работает на хорсе пока не уберу текстуры.
Если текстуры в другой папке, находит браш, но не видит текстуру:
Вложение 21154

Весь смысл этой затеи был именно хранить модели отдельно от текстур.

Как узнать имя браша?

P. S. Нашёл в хорсе новую команду xGetSurfaceTexture, всё равно не помогло, текстуры как буд-то нет.
P. P. S. А почему вложение сейчас исчезло? Загрузил по новой.

Я пытался запилить материалы в одной папке а модельки в другой но в ходе экспериментов оказалось что если текстура не лежит с загружаемой моделью , никакой информации о ней при загрузке и использовании нет. Сурфейсы будут то без текстур.

Arton 18.11.2014 16:05

Ответ: Как наложить текстуру на полигон
 
Цитата:

Сообщение от tirarex (Сообщение 289475)
никакой информации о ней при загрузке и использовании нет.

Во мне интересно КАК это получается??? (вопрос не к тебе конкретно)

Значит такое сработало только с блицем, жаль.

Так что насчёт браша? Как его имя узнать, браш хорс находит. Вопрос в целом не важный, но всё же интересный.
(похоже не как)


Часовой пояс GMT +4, время: 06:53.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot