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=8392)

karry 27.05.2009 12:21

Частичное масштабирование изображения
 
Возможно ли сделать такую штуку...есть стрелка-указатель точки назначения для юнита состоящая из прямоугольника и треугольника, так вот можно ли оставить часть с треугольником обычного масштаба, а прямоугольник растягивать ? Сейчас поставил составную стрелку, две текстуры на два отдельных квада, но между частями видна граница текстур.

Spiderman 27.05.2009 12:23

Ответ: Частичное масштабирование изображения
 
Лучше покажи исходник, а то не у всех работает образное мішление

karry 27.05.2009 12:41

Ответ: Частичное масштабирование изображения
 
Ну если не работает, то :



Видишь ? Выделяем юнит, от юнита к курсору протягивается стрелка. Длина стрелки разная, но треугольный указатель одного размера. Сейчас я сделал отдельно треугольник и отдельно прямоугольник, на разных квадах. Как это сделать одной текстурой и одним квадом ?

SBJoker 27.05.2009 13:12

Ответ: Частичное масштабирование изображения
 
Имхо нефик ипать моск, делай составным из 2х квадов... отдельно стрелки и отдельно прямоугольника

karry 27.05.2009 15:10

Ответ: Частичное масштабирование изображения
 
Я же сказал, граница между ними портит вид.

SBJoker 27.05.2009 15:18

Ответ: Частичное масштабирование изображения
 
убери границу. Это проще.

karry 27.05.2009 16:05

Ответ: Частичное масштабирование изображения
 
И как это сделать ?

SBJoker 27.05.2009 17:29

Ответ: Частичное масштабирование изображения
 
Ну закрась её например..я ж незнаю откуда она там у тебя.. или текстура неоднотонная?

karry 27.05.2009 17:43

Ответ: Частичное масштабирование изображения
 
Ну вот, смотри, два квада вровень располагаются на одной высоте, одинаковый оттенок красного, граница между прямоугольником и треугольником очень четко видна.


SBJoker 27.05.2009 17:49

Ответ: Частичное масштабирование изображения
 
Сделай чтоб перекрывались чуть-чуть

karry 27.05.2009 17:50

Ответ: Частичное масштабирование изображения
 
Они чуть-чуть перекрываются.

IGR 27.05.2009 18:04

Ответ: Частичное масштабирование изображения
 
скрин в студию !!

karry 27.05.2009 18:32

Ответ: Частичное масштабирование изображения
 
А пост номер 9 это что, двоичный код ? :)

jimon 27.05.2009 19:08

Ответ: Частичное масштабирование изображения
 
karry
делай с помощью 5 треугольников, так чтобы все они были сойденены

ABTOMAT 27.05.2009 21:21

Ответ: Частичное масштабирование изображения
 
Цитата:

Сообщение от karry (Сообщение 106040)
Ну вот, смотри, два квада вровень располагаются на одной высоте, одинаковый оттенок красного, граница между прямоугольником и треугольником очень четко видна.


Граница там от неумелого использования маски. Сделай как следует её и будет зашибись.

IGR 27.05.2009 21:29

Ответ: Частичное масштабирование изображения
 
Цитата:

А пост номер 9 это что, двоичный код ?
а точно скрин !! извени !! :(

MiXaeL 27.05.2009 22:06

Ответ: Частичное масштабирование изображения
 
По сабжу, а можно ведь найти два крайних вертекса у стрелки и их оттягивать? Конечно, с геометрией чуток повозиться, но все же.
Тогда стрелку не квадами делать, а моделькой. Кстати, даже на один triangle будет меньше)

karry 28.05.2009 00:37

Ответ: Частичное масштабирование изображения
 
Цитата:

Граница там от неумелого использования маски. Сделай как следует её
Я не телепат, мысли через интернет читать не умею, "как следует" - это как ?

Если использовать вместо маскинга альфу, то при некоторых углах камеры получается вот такое :

И границы всё равно видны, хотя и слабее.

karry 28.05.2009 14:17

Ответ: Частичное масштабирование изображения
 
Ладно, от границ избавился, а что делать с наложением которое на скрине ? Полупрозрачный квад с синей текстурой располагается ниже стрелки, но когда стрелка направлена по направлению камеры - происходит такая фигня. Если отключить EntityAlpha то естественно ничего не смешивается.

ABTOMAT 28.05.2009 14:37

Ответ: Частичное масштабирование изображения
 
"как следует" - это значит использовать не чёрный цвет в качестве маски, а альфа-канал. При этом основной канал должен быть полностью красным
на скрине из поста 18 классическое проявление туннельного эффекта альфы
лечение: центр ентити-стрелки должен быть ближе к камере чем центр воды
или использовать маску, сделанную как следует

karry 28.05.2009 15:12

Ответ: Частичное масштабирование изображения
 
Цитата:

использовать не чёрный цвет в качестве маски, а альфа-канал. При этом основной канал должен быть полностью красным
Я именно это и сделал, перевел всё в tga с альфой, канал RGB сплошной, маска по альфе. "Туннельный эффект" остается.

Цитата:

центр ентити-стрелки должен быть ближе к камере чем центр воды
Так не пойдет...что еще можно сделать ?

MiXaeL 28.05.2009 15:23

Ответ: Частичное масштабирование изображения
 
Ничего, туннельный эффект не лечится.
Можно, конечно, вручную сортировать объекты. Библиотека для этого где-то была здесь. Вроде даже вот она. Но это не слишком быстро.

Knightmare 28.05.2009 15:41

Ответ: Частичное масштабирование изображения
 
Цитата:

Сообщение от karry (Сообщение 106123)
Я именно это и сделал, перевел всё в tga с альфой, канал RGB сплошной, маска по альфе. "Туннельный эффект" остается.

Фильтрацию текстур отключать не пробовал, не? Хотя не уверен что это реально в блитзе для одного объекта ее выключить.
Хотя попробуй грузануть ее без мипов, должно помочь вроде (флаг сам ищи в хэлпе, мне лень, но он есть, в том числе и с масками должен спасти, но не факт).

MiXaeL 28.05.2009 15:53

Ответ: Частичное масштабирование изображения
 
И все-таки мой первый совет был не плох. Сделай себе модельку стрелы, плоскую естественно. Потом вытягивай за крайние два вертекса и все. Ни наложений, ни глюков с альфой. :)

karry 28.05.2009 17:16

Ответ: Частичное масштабирование изображения
 
Цитата:

туннельный эффект не лечится.
В блице или вообще ? Чеж так хреново-то ?

Цитата:

Потом вытягивай за крайние два вертекса и все.
А примеры какие-нибудь имеются ? Вроде есть только одна команда по присвоению координат, и всё, даже номер вертекса вручную искать, не слишком хардкорно ? Вертекс не имеет ориентации, не имеет родителей...с трудом представляю как это сделать.

Knightmare 28.05.2009 17:24

Ответ: Частичное масштабирование изображения
 
Цитата:

Сообщение от karry (Сообщение 106140)
В блице или вообще ? Чеж так хреново-то ?

А примеры какие-нибудь имеются ? Вроде есть только одна команда по присвоению координат, и всё, даже номер вертекса вручную искать, не слишком хардкорно ? Вертекс не имеет ориентации, не имеет родителей...с трудом представляю как это сделать.

Вообще не лечится. Ну почти...
Проще руками создать буфер, там ты будешь все вертексы знать. Как бы десяток точек руками расставить не есть проблема я думаю.

ABTOMAT 28.05.2009 17:33

Ответ: Частичное масштабирование изображения
 
Цитата:

Я именно это и сделал, перевел всё в tga с альфой, канал RGB сплошной, маска по альфе. "Туннельный эффект" остается.
...я имел ввиду вкобчить флаг - маска, а не альфа (в блице)

Цитата:

В блице или вообще ? Чеж так хреново-то ?
Не только в блице, но вообще. Хреново. Не лечится. (очень черезжопно)

karry 28.05.2009 17:46

Ответ: Частичное масштабирование изображения
 
Цитата:

...я имел ввиду вкобчить флаг - маска, а не альфа (в блице)
Эээ...сделать текстуры с альфой, а флаг-маска ? Только что попробовал, просто выводит квады, ничего не маскирует. Чего-то ты не то хотел сказать, наверное.

Вот скрин, как оно сделано ? Фактически то же самое что я хочу сделать. Зеленое кольцо вокруг мужика, и круглый розовый оверлей, и все цвета в порядке, никаких пересечений и прочих гадостей.

rr333 28.05.2009 18:33

Ответ: Частичное масштабирование изображения
 
Вот тебе пример ручного создания стрелки:
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()
cam=CreateCamera()
CameraClsColor cam,0,0,215
PositionEntity cam,0,3,-5
RotateEntity cam,30,0,0
l=CreateLight()
strelka=createstrelka()
EntityColor strelka,255,30,30
Repeat
If KeyHit(57) wf=1-wf
If wf=1 Then
Wireframe True
Else
Wireframe False
EndIf
If KeyDown(200) Then updatestrelka(strelka,.05)
If KeyDown(208) Then updatestrelka(strelka,-.05)
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End

Function createstrelka()
strelka=CreateMesh()
surf=CreateSurface(strelka)
vs1=AddVertex(surf,0,0,0,.5,0)
vs3=AddVertex(surf,-1,0,-1,.166,.333)
vs2=AddVertex(surf,1,0,-1,.834,.333)
AddTriangle(surf,vs1,vs2,vs3)
vd1=AddVertex(surf,-.5,0,-1,.333,.333)
vd2=AddVertex(surf,.5,0,-1,.666,.333)
vd3=AddVertex(surf,-.5,0,-3,.333,1)
vd4=AddVertex(surf,.5,0,-3,.666,1)
;vd3=5 vd4=6
AddTriangle(surf,vd1,vd2,vd3)
AddTriangle(surf,vd2,vd4,vd3)
Return strelka
End Function

Function updatestrelka(s,up#)
gs=GetSurface(s,1)
VertexCoords gs,5,VertexX(gs,5),VertexY(gs,5),VertexZ(gs,5)+up
VertexCoords gs,6,VertexX(gs,6),VertexY(gs,6),VertexZ(gs,6)+up
End Function

P.s. можешь наложить текстуру.


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

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