Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Как наложить текстуру только на одну грань куба?
Когда куб создан через xCreateCube то никак.
Надо создавать эту грань отдельно.
Вот пример функции где создаётся куб, на каждую сторону которого кладётся отдельная текстура.
Function mLoadSkyBox%(Dir$,Typ$="jpg")
Local Mesh%=xCreateMesh()
Local Brush%,Texture%,Surf%,v0%,v1%,v2%,v3%
; Left
If FileType(Dir+"\"+"left."+Typ)<>0
Texture=xLoadTexture(Dir+"\"+"left."+Typ,49)
Brush=xCreateBrush()
xBrushTexture Brush,Texture
Surf=xCreateSurface(Mesh,Brush)
v0=xAddVertex(Surf,-1, 1,-1,0,0)
v1=xAddVertex(Surf,-1, 1, 1,1,0)
v2=xAddVertex(Surf,-1,-1,-1,0,1)
v3=xAddVertex(Surf,-1,-1, 1,1,1)
xAddTriangle Surf,v2,v1,v0
xAddTriangle Surf,v1,v2,v3
EndIf
; Front
If FileType(Dir+"\"+"front."+Typ)<>0
Texture=xLoadTexture(Dir+"\"+"front."+Typ,49)
Brush=xCreateBrush()
xBrushTexture Brush,Texture
Surf=xCreateSurface(Mesh,Brush)
v0=xAddVertex(Surf,-1, 1,1,0,0)
v1=xAddVertex(Surf, 1, 1,1,1,0)
v2=xAddVertex(Surf,-1,-1,1,0,1)
v3=xAddVertex(Surf, 1,-1,1,1,1)
xAddTriangle Surf,v2,v1,v0
xAddTriangle Surf,v1,v2,v3
EndIf
; Right
If FileType(Dir+"\"+"right."+Typ)<>0
Texture=xLoadTexture(Dir+"\"+"right."+Typ,49)
Brush=xCreateBrush()
xBrushTexture Brush,Texture
Surf=xCreateSurface(Mesh,Brush)
v0=xAddVertex(Surf,1, 1, 1,0,0)
v1=xAddVertex(Surf,1, 1,-1,1,0)
v2=xAddVertex(Surf,1,-1, 1,0,1)
v3=xAddVertex(Surf,1,-1,-1,1,1)
xAddTriangle Surf,v2,v1,v0
xAddTriangle Surf,v1,v2,v3
EndIf
; Back
If FileType(Dir+"\"+"back."+Typ)<>0
Texture=xLoadTexture(Dir+"\"+"back."+Typ,49)
Brush=xCreateBrush()
xBrushTexture Brush,Texture
Surf=xCreateSurface(Mesh,Brush)
v0=xAddVertex(Surf, 1, 1,-1,0,0)
v1=xAddVertex(Surf,-1, 1,-1,1,0)
v2=xAddVertex(Surf, 1,-1,-1,0,1)
v3=xAddVertex(Surf,-1,-1,-1,1,1)
xAddTriangle Surf,v2,v1,v0
xAddTriangle Surf,v1,v2,v3
EndIf
; Bottom
If FileType(Dir+"\"+"bottom."+Typ)<>0
Texture=xLoadTexture(Dir+"\"+"bottom."+Typ,49)
Brush=xCreateBrush()
xBrushTexture Brush,Texture
Surf=xCreateSurface(Mesh,Brush)
v0=xAddVertex(Surf,-1,-1, 1,0,0)
v1=xAddVertex(Surf, 1,-1, 1,1,0)
v2=xAddVertex(Surf,-1,-1,-1,0,1)
v3=xAddVertex(Surf, 1,-1,-1,1,1)
xAddTriangle Surf,v2,v1,v0
xAddTriangle Surf,v1,v2,v3
EndIf
; Top
If FileType(Dir+"\"+"top."+Typ)<>0
Texture=xLoadTexture(Dir+"\"+"top."+Typ,49)
Brush=xCreateBrush()
xBrushTexture Brush,Texture
Surf=xCreateSurface(Mesh,Brush)
v0=xAddVertex(Surf,-1, 1, 1,0,0)
v1=xAddVertex(Surf,-1, 1,-1,1,0)
v2=xAddVertex(Surf, 1, 1, 1,0,1)
v3=xAddVertex(Surf, 1, 1,-1,1,1)
xAddTriangle Surf,v2,v1,v0
xAddTriangle Surf,v1,v2,v3
EndIf
xEntityFX Mesh,1+8
xFlipMesh Mesh
xUpdateNormals Mesh
Return Mesh
End Function
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|