Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Xors3D

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 24.08.2010, 15:03   #1
fadalist
AnyKey`щик
 
Регистрация: 07.10.2009
Сообщений: 13
Написано одно полезное сообщение
xLine3D - нужна ф-я

Здравствуйте. Читаю мануал по Xors3d 1.14 26 Jun 2009, там была такая ф-я. Почему убрали такую полезную функцию, и возможно ли её добавить в следующих релизах?

xLine3D ( int x1, int y1, int z1, int x2, int y2, int z2, int red, int green, int blue, int alpha, bool zenable = true )

Либо подскажите как можно нарисовать линию между двумя движущимися Entity. Пытаюсь использовать динамически создаваемые меши.

Global laser =xCreateMesh()
xEntityOrder(laser,1)
Global LasSurf = xCreateSurface(laser, 0)

xAddVertex(LasSurf, -1, -1, 0)
xAddVertex(LasSurf, -1, 1, 0)
xAddVertex(LasSurf, 1, 1, 0)
xAddVertex(LasSurf, 1, -1, 0)

xAddTriangle(LasSurf, 0, 1, 2)
xAddTriangle(LasSurf, 0, 2, 3)

Затем в цикле меняю координаты вершин:
xVertexCoords(LasSurf, 0, xEntityX(ship\Ent), xEntityY(ship\Ent), xEntityZ(ship\Ent))
xVertexCoords(LasSurf, 1, xEntityX(ship\Ent), xEntityY(ship\Ent)+1, xEntityZ(ship\Ent))
xVertexCoords(LasSurf, 2, xEntityX(ship\Target), xEntityY(ship\Target), xEntityZ(ship\Target))
xVertexCoords(LasSurf, 3, xEntityX(ship\Target), xEntityY(ship\Target)+1, xEntityZ(ship\Target))
xUpdateNormals(laser)

Получается, сложно и не очень хорошо.
(Offline)
 
Ответить с цитированием
Старый 24.08.2010, 16:07   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: xLine3D - нужна ф-я

xCameraProject спроецирует координаты из 3Д в 2Д. А дальше уже просто xLine
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 24.08.2010, 16:29   #3
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: xLine3D - нужна ф-я

ABT,а с zenable что делать будешь?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (24.08.2010)
Старый 24.08.2010, 16:39   #4
fadalist
AnyKey`щик
 
Регистрация: 07.10.2009
Сообщений: 13
Написано одно полезное сообщение
Ответ: xLine3D - нужна ф-я

Да была мысль 2Д линией воспользоваться, но как заметил HolyDel, проблемка будет. Представляете 2 корабля стреляют друг по другу, а вместо лазеров линия от центра одного до центра другого, не очень красиво будет

Сейчас сделал так, корявенько конечно. Но работает.

Global laser = xCreateCube(ship\Ent)
xScaleEntity(laser, 0.1,0.1, 100)
xPositionEntity(laser, 0,0,100)

создает лазер в виде куба и прикрепляется к родителю (кораблю)
далее в цикле

If xMeshesIntersect(laser, tar) = True Then
dist# = xEntityDistance(ship\Ent, tar)
xScaleEntity(laser, 0.1, 0.1, dist/2)
xPositionEntity(laser, 0, 0, dist/2)
Else
xScaleEntity(laser, 0.1, 0.1, 100)
xPositionEntity(laser, 0,0,100)
EndIf

оно конечно работает, но линия было бы всё равно не плохо, да и точки в 3д не помешали бы...
(Offline)
 
Ответить с цитированием
Старый 25.08.2010, 15:26   #5
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: xLine3D - нужна ф-я

Имхо, вместо 3д-линии для лазера лучше использовать спрайт с текстурой. xLine3D создавалась для отображения различной debug-информации.
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (25.08.2010)
Старый 25.08.2010, 15:39   #6
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: xLine3D - нужна ф-я

и была в этом плане весьма удобна, особенно когда я тестил порталы и физику. так что верните, хуле
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
ABTOMAT (25.08.2010), Arles (27.08.2010), HolyDel (25.08.2010), is.SarCasm (11.03.2011), Randomize (06.01.2011), Reks888 (25.08.2010)
Старый 25.08.2010, 17:45   #7
fadalist
AnyKey`щик
 
Регистрация: 07.10.2009
Сообщений: 13
Написано одно полезное сообщение
Ответ: xLine3D - нужна ф-я

Я пока выкрутился из ситуации описанным выше способом. Использовать спрайты я не пробовал, но думаю придется голову поломать на какой угол его повернуть. С Z буфером можно выкрутится с помощью xEntityOrder с положительным значением. И ещё со спрайтом не работают шейдеры, хотя по сути это же полигон (2 треугольника). Если использовать поверхности, шейдеры работают, но придется плюсом к проблеме со спрайтом ещё голову поломать как его ориентировать на камеру.
(Offline)
 
Ответить с цитированием
Старый 25.08.2010, 21:14   #8
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: xLine3D - нужна ф-я

спрайт не всегда полигон. на уровне гапи по крайней мере есть так называемые точечные спрайты. когда текстура натягивается на точку.

мое имхо - если ты делаешь космические бои, где лазеры - основное оружие, то над ним надо попотеть. делай цилиндром каким нибудь. или даже несколькими цилиндрами друг в друга вложенными. етож почти основной эффект в твоей игре, не?
(Offline)
 
Ответить с цитированием
Старый 25.08.2010, 21:32   #9
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: xLine3D - нужна ф-я

делай цилиндром каким нибудь. или даже несколькими цилиндрами друг в друга вложенными.
Оу, щи! Да чем вам растянутый квад с текстурой не угодил?
А для дебага функция нужна. Запилите как выпилили!
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 25.08.2010, 23:05   #10
fadalist
AnyKey`щик
 
Регистрация: 07.10.2009
Сообщений: 13
Написано одно полезное сообщение
Ответ: xLine3D - нужна ф-я

Про точечные спрайты не слышал, надо почитать что за звери такие
Сейчас растянутыми квадратами и оставил, видели бы вы какое дуло летало пока масштаб не подобрал

Кстати может подскажете как ориентировать эти квадраты одной стороной на камеру? Чтобы текстура по нормальному ложилась.

И может кому интересно чем я тут маюсь, прямо сюда можно архивчик выложить?
(Offline)
 
Ответить с цитированием
Старый 25.08.2010, 23:15   #11
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: xLine3D - нужна ф-я

векторное произведение знаешь что за штука?

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

и отключи backface culling, чтобы не мучаться с порядко вершин.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
fadalist (02.09.2010)
Старый 28.08.2010, 11:15   #12
fadalist
AnyKey`щик
 
Регистрация: 07.10.2009
Сообщений: 13
Написано одно полезное сообщение
Ответ: xLine3D - нужна ф-я

Спасибо, буду разбираться.
(Offline)
 
Ответить с цитированием
Старый 28.08.2010, 15:41   #13
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: xLine3D - нужна ф-я

У спрайта есть несколько режимов отображения. См. документацию Modules -> Constants -> Sprite view modes
__________________

(Offline)
 
Ответить с цитированием
Старый 10.03.2011, 23:40   #14
fadalist
AnyKey`щик
 
Регистрация: 07.10.2009
Сообщений: 13
Написано одно полезное сообщение
Ответ: xLine3D - нужна ф-я

Эх забросил я свою поделку на долгие месяцы. Но мужики спасибо добавили всё таки xCreate3DLine
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com