forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Flags для текстур. Поясните все их значения. (http://forum.boolean.name/showthread.php?t=2395)

Nunan 13.01.2007 17:41

Flags для текстур. Поясните все их значения.
 
flags (optional) - texture flag:
1: Color (default)
2: Alpha
4: Masked
8: Mipmapped
16: Clamp U
32: Clamp V
64: Spherical environment map
128: Cubic environment map
256: Store texture in vram
512: Force the use of high color textures

Назанчение большнества из них я понимаю и вижу в работе, но разницу между некоторыми я просто не замечаю!
128 - вообще не работает.
Обьясните мне пожалуйста каждую из них, поподробней.

Особенно меня интересует, то что когда я накладываю одну текстуру на обьект и вторую (вторым слоем) то результат получается темноватый, если применить и 3ю, 4ю слои то обьект становится очень тёмным, получается что "темность" текстур складывается. Расскажите как сделать чтобы при наложении нескольких слоев ны было темно.

jimon 13.01.2007 18:05

Re: Flags для текстур. Поясните все их значения.
 
1: ничего не делать
2: юзать альфа канал
4: юзать маску
8: юзать генерацию mip-map уровней (ето когда текстура заменяется на менее качественую при удалении обьекта от камеры)
16: хз (типа инвертнуть как я понимаю текстурную координату)
32: хз
64: сферическая карта окружения (для отражений)
128: кубическая карта окружения (-//-)
256: хранить текстуру в видеопамяти
512: ускорить метод использования текстур с высоким цветовым разрешением

Diplomat 13.01.2007 18:09

Re: Flags для текстур. Поясните все их значения.
 
1- Простая карта цвета.
2- Карта прозрачности. Более темные части текстуры более прозрачны, светлые- менее. Если текстура имеет свою карту прозрачности (альфаканал)- используется она.
4- Черные тексели прозрачны. Не черные- непрозрачны.
8- Создается несколько "копий" текстуры меньших детализаций. "Уменьшненные копии" текстуры автоматически подставляются при удалении, что должно повышать скорость.
16, 32- Запрещает тайлинг тектстуры по горизонтали/вертикали. Пример: натяни такую текстуру на кубик и задай ей параметры ScaleTexture <1
64- Простейший эффект отражения
128- Более сложный эффект отражения: "6 текстур в одной", по одной текстуре для каждой стороны света. Может не работать на древних видеокартах.
256- far-фильтрация отключается и текстура не размывается при удалении. Рендерится медленней. Быстрей проходит работа с текстурным буфером.
512- включает 16-битные текстуры. Для 16-битных режимов экрана дает кроме экономии памяти прирост скорости.

"Затемнение" текстур при мультитекстурировании к флагам отношения не имеет. См. TextureBlend. В Хелпе могут быть не описаны "новые" режимы блендинга 4 (бампмаппинг) и 5 (смешивание без затемнения).

Если не понял- убью! (шутка. почти.)
8)
Удач!

P.S. Как оказалось, Джимон ответил раьше. Спроси у него, откуда он на своем Ирличе знает Блицевские флаги? ;)

Nunan 13.01.2007 19:44

Re: Flags для текстур. Поясните все их значения.
 
jimon, я хотел не перевод с английского, перевести я и сам хорошо могу.

Diplomat, спасибо, я именно это и хотел услышать. :)

У меня видео карта далеко не старая видеокарта Радеон 9800, но при флаге 128 в функции загрузки текстуры выдаёт ошибку что текстура does not exist.

Всё в принципе понятно :)
А нет... , хочу ещё одно пояснение - "6 текстур в одной" - при загрузке есть только один файл (текстура), откуда возьмутся шесть? Или эта текстура уже сама разбивается на 6 равных частей?

НУБ 13.01.2007 20:57

Re: Flags для текстур. Поясните все их значения.
 
Nunan
Это потому, что ты неправильную текстуру грузишь, нужно кубемап грузить в линейной развёртке, а лучше его не грузить, а создавать и уже потом рендерить чего-нить туда ;)

jimon 13.01.2007 22:19

Re: Flags для текстур. Поясните все их значения.
 

Diplomat
там можно самому делать такие фичи
и готовых тоже хватает :)

Diplomat 13.01.2007 23:42

Re: Flags для текстур. Поясните все их значения.
 
Цитата:

там можно самому делать такие фичи
и готовых тоже хватает
Многое возможно в этом мире, но мало действительно нужно человеку для счастья. /почти восточная мудрость/ :-)

moka 14.01.2007 00:35

Re: Flags для текстур. Поясните все их значения.
 
Цитата:

Особенно меня интересует, то что когда я накладываю одну текстуру на обьект и вторую (вторым слоем) то результат получается темноватый, если применить и 3ю, 4ю слои то обьект становится очень тёмным, получается что "темность" текстур складывается. Расскажите как сделать чтобы при наложении нескольких слоев ны было темно.
Вид наложения текстуры зависит от другого:
TextureBlend Texture,Blend%
1 - Простой.
2 - Затемняет.
3 - Засветляет.
5 - Накладывает, как в фотошопе Overlay.
Меняй их, для накладываемых текстур.

HolyDel 14.01.2007 01:15

Re: Flags для текстур. Поясните все их значения.
 
про блендинг
1 - альфа (color1*a+color2*(a-1))
2 - умножение (color1*color2)
3 - сложение (color1+color2)
4 - какая-то хрень черно-белая ][3
5 - половинчатое умножение или че-то в этом роде. color1*color2*0.5

moka 14.01.2007 01:26

Re: Flags для текстур. Поясните все их значения.
 
HolyDel
Это ИМХО?
Просто я думаю что ты не прав, даже в полне уверен.

color1 - цвет накладываемой
color2 - цвет на что накладывают
a1 - Альфа накладываемого цвета.
1 - Нормально ((color1+(color2*a1))*(1-a1))
2 - Затемнение (color2-color1)
3 - Засветление (color1+color2)
4 - Это я не пробывал
5 - Смешивание тут посложнее, а тоесть:
Если color1>127.5, то засветляет, если color1<127.5 то затемняет.

HolyDel 14.01.2007 01:32

Re: Flags для текстур. Поясните все их значения.
 
нет, ето не имхо, хотя и я загнался чуть.
(color1*color2)/255
color1*color2/127
вот из справки:
Код:

Alpha:
This blends the pixels according to the Alpha value. This is rougly done to the formula:
Rr = ( An * Rn ) + ( ( 1.0 - An ) * Ro )
Gr = ( An * Gn ) + ( ( 1.0 - An ) * Go )
Br = ( An * Bn ) + ( ( 1.0 - An ) * Bo )
Where R = Red, G = Green, B = Blue, n = new pixel colour values, r = resultant colour values, o = old pixel colour values.
Alpha blending is the default blending mode and is used with most world objects.
Multiply:
This blend mode will darken the underlying pixels. If you think of each RGB value as being on a scale from 0% to 100%, where 0 = 0% and 255 = 100%, the multiply blend mode will multiply the red, green and blue values individually together in order to get the new RGB value, roughly according to:
Rr = ( ( Rn / 255.0 ) * ( Ro / 255.0 ) ) * 255.0
Gr = ( ( Gn / 255.0 ) * ( Go / 255.0 ) ) * 255.0
Br = ( ( Bn / 255.0 ) * ( Bo / 255.0 ) ) * 255.0
The alpha value has no effect with multiplicative blending. Blending a RGB value of 255, 255, 255 will make no difference, while an RGB value of 128, 128, 128 will darken the pixels by a factor of 2 and an RGB value of 0, 0, 0 will completely blacken out the resultant pixels. An RGB value of 0, 255, 255 will remove the red component of the underlying pixel while leaving the other color values
untouched.
Multiply blending is most often used for lightmaps, shadows or anything else that needs to 'darken' the resultant pixels.
Add:
Rr = ( Rn * An ) + Ro
Gr = ( Gn * An ) + Go
Br = ( Bn * An ) + Bo
The resultant RGB values are clipped out at 255, meaning that multiple additive effects can quickly cause visible banding from smooth gradients.


Diplomat 14.01.2007 11:35

Re: Flags для текстур. Поясните все их значения.
 
Цитата:

4 - какая-то хрень черно-белая ][3
Повторюсь: это DOT3 микрорельеф (бампмаппинг). В качестве текстуры необходима сгенерированная карта нормалей. Результирующий цвет слоя под этой текстурой (блендинг цвета модели и текстур, освещение влияет) задает ей все необходимые параметры. Красная компонента цвета (0-255) - освещение слева/справа; зеленая - сверху/снизу; синяя- яркость.

Nunan 14.01.2007 19:25

Re: Flags для текстур. Поясните все их значения.
 
Посдкажите может пример хорошего пользования TextureBlend t,4 (ссылку на пример).
Я сам конечно разобрался но не совсем, я не определился как лучше чтобы выглядела текстура (карта нормалей) для наилучшего эффекта или с помощью чего её лучше генерировать?

tb=LoadTexture("tb.bmp")
t=LoadTexture("t.jpg")
TextureBlend t,2
TextureBlend tb,4
EntityTexture en,t,0,0
EntityTexture en,tb,0,1

Diplomat, расскажи пожалуйста какое значение имеет порядок слоя (когда текстуры две).
И при использовании точечного света TextureBlend tb,4 не работает нормально.

НУБ 14.01.2007 19:48

Re: Flags для текстур. Поясните все их значения.
 
4 - скалярное умножение нормалей, такой тип смешивания используется в бамп мапинге, текстура нормалей получается либо из карты высот(по средством плагина для фотожопа например, хоя можно и самому сделать), либо через хай-поли модель(в melody или в 3д максе начиная с 7-го). Для попиксельного освещения с картой нормалей нужно проецировать на мешь текстуру этого самого освещения(тоже карта нормалей с направлением света), обычное вершинное освещение здесь работать не будет.
Выглядеть это может так:
1й слой - карта нормалей с блендом 2
2й - карта освещения с блендом 4(1 и 2 можно поменять местами)
3 - дефуз(2 или 5 бленд)

Horror 14.01.2007 20:06

Re: Flags для текстур. Поясните все их значения.
 
во мельком прочитал форум! вот вопрос (возможно в тему)
как на модель (к примеру 3дс) наложить текстуру как на стандартный террейн блитца !типо несколько текстур с масками там...

пасибо зарание

НУБ 14.01.2007 20:39

Re: Flags для текстур. Поясните все их значения.
 
эээ чо?
сделай развёртку ей в максе, наложи 2 текстуры, рассчитай альфу при смешивании ;)

CRASHER 16.12.2007 20:26

Re: Flags для текстур. Поясните все их значения.
 
а умене вопрос, как заальфить текстуру каким либо мне нужным цветом?
Я нашёл только как чёрный цвет сделать прозрачным.:dontknow:

Bagration 16.12.2007 20:29

Re: Flags для текстур. Поясните все их значения.
 
Цитата:

Сообщение от CRASHER
а умене вопрос, как заальфить текстуру каким либо мне нужным цветом?
Я нашёл только как чёрный цвет сделать прозрачным.:dontknow:

Код:

Function MaskTexture(Texture, Red, Green, Blue)
Local MaskColor = (Red Shl 16) Or (Green Shl 8) Or Blue
Local MaskSizeX = TextureWidth(Texture)
Local MaskSizeY = TextureHeight(Texture)
Local MaskBuffer = TextureBuffer(Texture)
LockBuffer(MaskBuffer)
For x = 0 To MaskSizeX
For y = 0 To MaskSizeY
Pixel = ReadPixelFast(x, y, MaskBuffer) And $00FFFFFF
If (Pixel = MaskColor) Then
WritePixelFast(x, y, Pixel, MaskBuffer)
Else
WritePixelFast(x, y, Pixel Or $FF000000, MaskBuffer)
EndIf
Next
Next
UnlockBuffer(MaskBuffer)
End Function


Tadeus 16.12.2007 21:24

Re: Flags для текстур. Поясните все их значения.
 
Цитата:

Сообщение от НУБ
4 - скалярное умножение нормалей, такой тип смешивания используется в бамп мапинге, текстура нормалей получается либо из карты высот(по средством плагина для фотожопа например, хоя можно и самому сделать), либо через хай-поли модель(в melody или в 3д максе начиная с 7-го). Для попиксельного освещения с картой нормалей нужно проецировать на мешь текстуру этого самого освещения(тоже карта нормалей с направлением света), обычное вершинное освещение здесь работать не будет.
Выглядеть это может так:
1й слой - карта нормалей с блендом 2
2й - карта освещения с блендом 4(1 и 2 можно поменять местами)
3 - дефуз(2 или 5 бленд)

У меня такой код нормально работает:

Код:

Graphics3D 1024,768,32,1
SetBuffer BackBuffer()
cam=CreateCamera()

lit=CreateLight(1)

apel=CreateSphere(32)
PositionEntity apel,0,0,4

atex=LoadTexture("texture.png")
EntityTexture apel,atex,0,1

bump=LoadTexture("Orange-bumpmap.bmp")
TextureBlend bump,4
EntityTexture apel,bump,0,0

While Not KeyHit(1)
        TurnEntity apel,0,1,0
        TurnEntity cam,0,KeyDown(203)-KeyDown(205),0
        MoveEntity cam,0,0,KeyDown(200)*0.1-KeyDown(208)*0.1
          r#=(EntityX(apel)+1.1) *128.0
          g#=(EntityZ(apel)+1.1) *128.0
          b#=(EntityY(apel)+1.1) *128.0
          EntityColor apel,r#,g#,b#

        RenderWorld
        Flip
Wend
End

Причем не только нормально, но и красиво :-)

ЗЫЖ У меня как получилось, я сразу на радостях стал статью писать, чтоб другие как я пару месяцев не мучались))

CRASHER 16.12.2007 22:59

Re: Flags для текстур. Поясните все их значения.
 
Bagration, а чтот у меня не выходит.:''((
Я загрузил текстуру в png формате потом функцию применил, предварительно узнал RGB код в фотошопе, а он что то не хочэт

ааа работает, правда не без фильтра и не всегда, иногда просто не загружается.
А вот было бы сдорово сделать цвет в периоде. Ну чтоб наверняка и может ешчё поскажешь как сгладить края пзалст :)?

Bagration 17.12.2007 00:27

Re: Flags для текстур. Поясните все их значения.
 
Цитата:

Сообщение от CRASHER
Bagrationт ешчё поскажешь как сгладить края пзалст :)?

LoadTexture и два раза F1. Или:

flags (не обязательно) - дополнительные флаги:
1: Color - цветная (по умолчанию)
2: Alpha - прозрачная
4: Masked - маскированная
8: Mipmapped - сглаживание на расстоянии
16: Clamp U - ограничить текстуру по координате U
32: Clamp V - ограничить текстуру по координате V
64: Spherical environment map - сферическая карта окружения
128: Cubic environment map - кубическая карта окружения
256: Store texture in vram - сохранять текстуру в видеопамяти
512: Force the use of high color textures - улучшенная обработка многоцветных текстур

сам поймешь наверно. ;) Вообщем эксперементируй и все получиться.
P.S. советую заглянуть сюда http://www.boolean.name/showthread.php?t=4695
;)

CRASHER 17.12.2007 01:51

Re: Flags для текстур. Поясните все их значения.
 
ну если присмотрется, то я третим поблагодарил :)
я пользовался ентой штукой но я не понял как регулировать альфу и не понял как она вобще края то сгладить может? у меня просто вся текстура полупрозрачная.
ну и мож всётки подскажешь как сделать допустим R от 5 до 15 и G и B так же.
УУФФ да чтож я всё тут мусолюсь :))
ну ведь вопрос частый , всем понятно что надо в итоге глаткие края текстуры с альфой любого какого надо цвета.
Я не прошу больше чем ссылку на тутор или на тему обсуждения где всё чётко сказано. :) извиняюс сорвалсь :):)

Bagration 17.12.2007 02:04

Re: Flags для текстур. Поясните все их значения.
 
Цитата:

Сообщение от CRASHER
ну если присмотрется, то я третим поблагодарил :)
я пользовался ентой штукой но я не понял как регулировать альфу и не понял как она вобще края то сгладить может? у меня просто вся текстура полупрозрачная.
ну и мож всётки подскажешь как сделать допустим R от 5 до 15 и G и B так же.
УУФФ да чтож я всё тут мусолюсь :))
ну ведь вопрос частый , всем понятно что надо в итоге глаткие края текстуры с альфой любого какого надо цвета.
Я не прошу больше чем ссылку на тутор или на тему обсуждения где всё чётко сказано. :) извиняюс сорвалсь :):)

Как я знаю по моему опыту, дело не в Блитце. Надо сохранять в bmp. Ибо как я замечал jpg немного затуманивает цвета, даже черный не совсем черным становиться. :''(( Вроде так. В паинте ставишь цвета R от 5 до 15 и G и B так же и заливаешь задний фон... Просто jpeg уменьшает качество соотвественно размытие цветов.

CRASHER 17.12.2007 03:25

Re: Flags для текстур. Поясните все их значения.
 
да нет я вобще не сам рисую а уменя есть готовые, но в этих готовых фон как уже стпло понятно размытый. В фотошопе переправлять оч доло да и картинку испортить легко:(. :)
А что ссылки не будет?;)

Bagration 17.12.2007 15:55

Re: Flags для текстур. Поясните все их значения.
 
Цитата:

Сообщение от CRASHER
да нет я вобще не сам рисую а уменя есть готовые, но в этих готовых фон как уже стпло понятно размытый. В фотошопе переправлять оч доло да и картинку испортить легко:(. :)
А что ссылки не будет?;)

Какая ссылка? Гоу Гугл и "уроки по Photoshop". Дело как я уже сказал в качестве картинки. У меня уж был опыт когда мой знакомый нарисовал курсор 64*64 и сохранил его в jpeg - я ужас как долго парился закрашивая фон... :(

CRASHER 17.12.2007 17:56

Re: Flags для текстур. Поясните все их значения.
 
Bagration, Ну лано замучил чёт я тебя.;)
Попробую что понял:)

CRASHER 17.12.2007 18:04

Re: Flags для текстур. Поясните все их значения.
 
Цитата:

Сообщение от Bagration
Код:

Function MaskTexture(Texture, Red, Green, Blue)
Local MaskColor = (Red Shl 16) Or (Green Shl 8) Or Blue
Local MaskSizeX = TextureWidth(Texture)
Local MaskSizeY = TextureHeight(Texture)
Local MaskBuffer = TextureBuffer(Texture)
LockBuffer(MaskBuffer)
For x = 0 To MaskSizeX
For y = 0 To MaskSizeY
Pixel = ReadPixelFast(x, y, MaskBuffer) And $00FFFFFF
If (Pixel = MaskColor) Then
WritePixelFast(x, y, Pixel, MaskBuffer)
Else
WritePixelFast(x, y, Pixel Or $FF000000, MaskBuffer)
EndIf
Next
Next
UnlockBuffer(MaskBuffer)
End Function


ах да, хотел попросить о последней просьбе.:-D
не мог бы ты к функции добавить всё что нужно для простейшего примера, а то я ни как не могу вставить, если тяжело я не обижусь:)

Bagration 17.12.2007 21:36

Re: Flags для текстур. Поясните все их значения.
 
Цитата:

Сообщение от CRASHER
ах да, хотел попросить о последней просьбе.:-D
не мог бы ты к функции добавить всё что нужно для простейшего примера, а то я ни как не могу вставить, если тяжело я не обижусь:)

http://dump.ru/files/n/n010462830/ Вот сэмпл. Хочу отметить что фон тесктуры красный.


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

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