forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   b3d хелп или описание (http://forum.boolean.name/showthread.php?t=1200)

Trilliput 28.07.2006 11:04

b3d хелп или описание
 
Дайте пож ссылки на описание формата b3d. Даже на сайте блитца ничего нет.

tormoz 28.07.2006 19:08

Re: b3d хелп или описание
 
Ищи на старом блитц - форуме.

ZanoZa 28.07.2006 21:10

Re: b3d хелп или описание
 
http://blitzetc.boolean.name/04-jun05.htm
здесь тоже есть

Trilliput 28.07.2006 22:32

Re: b3d хелп или описание
 
Это немного нето. Мне надо вообще как с ним работать!

ЗЫ А старый форум по какому адресу прописан?

alcoSHoLiK 28.07.2006 23:35

Re: b3d хелп или описание
 
http://blitzgames.vov.ru/cgi-bin/YaBB/YaBB.cgi

tormoz 29.07.2006 03:43

Re: b3d хелп или описание
 
Цитата:

Сообщение от Trilliput
Это немного нето. Мне надо вообще как с ним работать!

Как с обычным мешем.
Уточни что именно тебя интересует.

Trilliput 29.07.2006 11:22

Re: b3d хелп или описание
 
Тогда может вопросами?

1. В формате b3d есть материалы?
2. Можно ли получать инфу о материалах при колизии?
3. Есть ли скелетная анимация?
4. Можно ли малой кровью организовать при помощи b3d уровень (те указывать кде создавать объекты, например источники света или стартовая позиция игрока)

ЗЫ Ссылка http://blitzgames.vov.ru/cgi-bin/YaBB/YaBB.cgi неработает

НУБ 29.07.2006 15:53

Re: b3d хелп или описание
 
Отвечаю:
1. да
2. да
3. да
4. да

ins1der 29.07.2006 16:53

Re: b3d хелп или описание
 
У меня есть модель в формате b3d а так же анимация к нему. Как сделать бег например, чтобы при нажатии стрелки вперед он бежал?

Trilliput 29.07.2006 17:18

Re: b3d хелп или описание
 
Дак где прочитать про команды которые используються для всего этого? В к блитцу ничегго нет.

По поводу уровня: Тоесть я например в 3DMax я создаю карту и на некоторых нужных точках раставляю думми, они экспортируюстья с моделью, а потом при загрузке уровня на эти места можно что либо ставить?

tormoz 29.07.2006 18:15

Re: b3d хелп или описание
 
Ставь плагин для бзд пипелайн и читай его хелп.
там все есть - и свет и материалы и даже коллизии (при подключении библиотеки екстеншенов)

Думми находи FindChild, только грузи как аниммеш.

И вообще лучше не заморачивайся и ставь свет, амбиент. и коллизию в Блитце. а не в максе

Trilliput 29.07.2006 19:07

Re: b3d хелп или описание
 
Ставить в блитце это конечно проще - но как быть если на уровне 20 - 30 источников света и например 100 "аптечек"? Все их прописывать вручную?

tormoz 29.07.2006 21:21

Re: b3d хелп или описание
 
Цитата:

но как быть если на уровне 20 - 30 источников света и например 100 "аптечек"? Все их прописывать вручную?
Оставь только один источник.(20 источников - это ЛОЛ)
Для аптечек и прочей ерунды : расставь думми, обзови как нибудь, сохрани отдельно все думми в сцену.
загрузи ее отдельно в макс и экспортируй.
в блитце загрузи как лоаданиммеш и перебери все чилды циклом, по именам объектов расставь аптечки патроны и тд. потом удали исходную сцену.

Trilliput 29.07.2006 22:22

Re: b3d хелп или описание
 
Ок так наверное и сделаю.
1. Как узнать количество чилдов у объекта (то раньше приходилось записывать в текстовик количество тех или иных объектов)? Команда CountChildren ( entity ) почему то выдает всегда 0.
2. Как лучше организовать определение различных типов загружаемых объектов? По именам, например "healt_01" или "ammo_01", или разными мешами грузить - одни отвечают за одни объекты другие за другие?
3. Как сделать так, что бы можно было указывать своиства того или иного объекта (свет - тип, радиус; здоровье - тип и кол-во).
4. В каком формате записывать имена объектов в максе?

alcoSHoLiK 29.07.2006 22:30

Re: b3d хелп или описание
 
1. Ты точно загрузил entity командой LoadAnimMesh?
2. Как угодно.
3. Используй типы.
4. Буквенно-цифровом.

Trilliput 29.07.2006 22:40

Re: b3d хелп или описание
 
1. А немного напутал - всегда был 1 чилд. Структура модели (земля и точки установки домиков, ну для пробы): земля к SceneRoot, все остальное к земле. Entity в команде была сама загруженная модель земли. (я уже начал подозревать что мне показывалось количество чилдов SceneRoot :) )

2. Ясно

3. Нет всмысле на этапе создания карты в максе указать тип объекта, а потом какнибудь вычленить, например из имени объекта ("light_1_3") - где 1 скажем тип, а 3 радиус.

4. Просто как то назвал вроде объект "arm-left" и он отказался находиться.

ЗЫ
Какой софт посоветуете для проектирования структуры проекта игры? Для отслеживания изменений и тп

alcoSHoLiK 30.07.2006 01:52

Re: b3d хелп или описание
 
ToDoList вроде неплохая прога.

Насчет имен. Они задаются в Максе. В блице же, обращаясь к чилду по имени нужно учитывать регистр. Само имя может быть произвольным.

WaReZ_MEN 31.07.2006 10:48

Re: b3d хелп или описание
 
Народ нужно полное обисание формата b3d может пример кто где видал на С++ или Delphi киньте ссылку буду презнателен....

Trilliput 31.07.2006 13:54

Re: b3d хелп или описание
 
Как узнать с каким материалом происходит колизия?

tormoz 31.07.2006 17:51

Re: b3d хелп или описание
 
Цитата:

Сообщение от Trilliput
Как узнать с каким материалом происходит колизия?

В Блитце нет понятия "материал"
Есть текстура. текстурный слой.
А коллизия происходит с объектами.
Твой вопрос бессмыслен

Trilliput 31.07.2006 18:08

Re: b3d хелп или описание
 
Хм странно а ранее мне ответили что можно получить инф о материале при коллизии.

Тогда как сделать распознование типа поверхности?

WaReZ_MEN 01.08.2006 02:04

Re: b3d хелп или описание
 
спасибо БОЛЬШОЕ. сам нашел.

tormoz 01.08.2006 02:32

Re: b3d хелп или описание
 
Цитата:

Сообщение от Trilliput
Хм странно а ранее мне ответили что можно получить инф о материале при коллизии.

Тогда как сделать распознование типа поверхности?

Что ты подразумеваешь под "типом поверхности" ?

Trilliput 01.08.2006 18:14

Re: b3d хелп или описание
 
Ну скажем мне надо узнавать что находиться под калесами например танка или машины, под ногами человека. Для создания разных эффектов - если песок то скажем один эффект, если грязь то второй. Ну и разное трение и сопративление для разных поверхностей на карте.

To: WaReZ_MEN

Нашел - поделись пожалуста.

tormoz 01.08.2006 20:04

Re: b3d хелп или описание
 
Только если узнаешь конкретную текстуру под "ногами"
На старом Блитцфоруме я выкладывал функции для этого. Жаль он не работает. Ща поищу в своей помойке...

Нашел. Разбирайся сам - сложная штука. Писалось давно уже все забыл :)
Можно определить текстуру. ее цвет, координаты натекстуре и тп

Код:


Global PickU#,PickV#,texture_buffer,texture_t,color_t%
Global LOverlapX#, LOverlapY#
Type TLine
Field x#
Field y#
Field dx#
Field dy#
End Type
Type
TVector
Field x#, y#, z#
End Type

Function PickedToTexture(layer_t)
x#=PickedX()
y#=PickedY()
z#=PickedZ()
ent = PickedEntity()

surf = PickedSurface()
brush=GetSurfaceBrush(surf)
texture_t =GetBrushTexture(brush,layer_t)
texture_buffer=TextureBuffer(texture_t)

tri = PickedTriangle()
;transform
TFormPoint x, y, z, 0, ent
x
=TFormedX()
y=TFormedY()
z=TFormedZ()
;coords of texture
u0#=VertexU(surf, TriangleVertex(surf, tri, 0),layer_t)
v0#=VertexV(surf, TriangleVertex(surf, tri, 0),layer_t)

u1#=VertexU(surf, TriangleVertex(surf, tri, 1),layer_t)
v1#=VertexV(surf, TriangleVertex(surf, tri, 1),layer_t)
Tex1=NewVector(u1-u0, v1-v0, 0)

u2#=VertexU(surf, TriangleVertex(surf, tri, 2),layer_t)
v2#=VertexV(surf, TriangleVertex(surf, tri, 2),layer_t)
Tex2=NewVector(u2-u0, v2-v0, 0)
;coords of vertex
gx0#=VertexX(surf, TriangleVertex(surf, tri, 0))
gy0#=VertexY(surf, TriangleVertex(surf, tri, 0))
gz0#=VertexZ(surf, TriangleVertex(surf, tri, 0))
gx1#=VertexX(surf, TriangleVertex(surf, tri, 1))
gy1#=VertexY(surf, TriangleVertex(surf, tri, 1))
gz1#=VertexZ(surf, TriangleVertex(surf, tri, 1))
Vt1=NewVector(gx1-gx0, gy1-gy0, gz1-gz0)
gx2#=VertexX(surf, TriangleVertex(surf, tri, 2))
gy2#=VertexY(surf, TriangleVertex(surf, tri, 2))
gz2#=VertexZ(surf, TriangleVertex(surf, tri, 2))
Vt2=NewVector(gx2-gx0, gy2-gy0, gz2-gz0)
Vt3=NewVector(x-gx0, y-gy0, z-gz0)
;angles vectors (V*)
av102#=AngleVectors(Vt1, Vt2)
av302#=AngleVectors(Vt3, Vt2)
Dav#=av302/av102
;angles vectors (Tex*)
at102#=AngleVectors(Tex1, Tex2)
at302#=at102*Dav
;projection V*
l01#=LenVector(Vt1)
l02#=LenVector(Vt2)
l03#=LenVector(Vt3)
gx1#=l01*Cos(av102)
gy1#=l01*Sin(av102)
Line12=NewLine(l02, 0, gx1, gy1)
gx3#=l03*Cos(av302)
gy3#=l03*Sin(av302)
Line03=NewLine(0, 0, gx3, gy3)

LinesIntersect(Line12, Line03)
Line04=NewLine(0, 0, IntersectX(), IntersectY())
DL#=LenLine(Line03)/LenLine(Line04)

Line14=NewLine(gx1, gy1, IntersectX(), IntersectY())
DL2#=LenLine(Line14)/LenLine(Line12)

;projection Tex*
Line12=NewLine(u1, v1, u2, v2)
MulLine(Line12, DL2)
Line04=NewLine(u0, v0, LineX2(Line12), LineY2(Line12))
MulLine(Line04, DL)

PickU=LineX2(Line04)
PickV=LineY2(Line04)

;delete
Delete Each TVector
Delete Each TLine
End Function

Function NewLine(x1#, y1#, x2#, y2#)
g.TLine=New TLine
g
\x=x1
g
\y=y1
g
\dx=x2-x1
g
\dy=y2-y1
Return Handle(g)
End Function
Function
DelLine(id)
g.TLine=Object.TLine(id)
If g=Null Return
Delete
g
End Function
Function
LenLine#(id)
g.TLine=Object.TLine(id)
If g=Null Return -1
Return Sqr(g\dx*g\dx+g\dy*g\dy)
End Function
Function
MulLine(id, k#)
g.TLine=Object.TLine(id)
If g=Null Return
g\dx=g\dx*k
g
\dy=g\dy*k
End Function
Function
LineX2#(id)
g.TLine=Object.TLine(id)
If g=Null Return 0
Return g\x+g\dx
End Function
Function
LineY2#(id)
g.TLine=Object.TLine(id)
If g=Null Return 0
Return g\y+g\dy
End Function
Function
LineX1#(id)
g.TLine=Object.TLine(id)
If g=Null Return 0
Return g\x
End Function
Function
LineY1#(id)
g.TLine=Object.TLine(id)
If g=Null Return 0
Return g\y
End Function
Function
ResetLine(id,x1#, y1#, x2#, y2#)
g.TLine=Object.TLine(id)
If g=Null Return
g\x=x1
g
\y=y1
g
\dx=x2-x1
g
\dy=y2-y1
End Function
Function LinesIntersect
(id1, id2)
g1.TLine=Object.TLine(id1)
If g1=Null Return
g2.TLine=Object.TLine(id2)
If g2=Null Return
;line N1
a1#=g1\dy
b1
#=-g1\dx
c1
#=a1 * g1\x + b1 * g1\y
;line N2
a2#=g2\dy
b2
#=-g2\dx
c2
#=a2 * g2\x + b2 * g2\y
;calculate
dx#=c1*b2-c2*b1
dy
#=a1*c2-a2*c1
d
#=a1*b2-a2*b1
If d=0 Return 0
LOverlapX#=dx/d
LOverlapY
#=dy/d
Return 1
End Function
Function
IntersectX#()
Return LOverlapX
End Function
Function
IntersectY#()
Return LOverlapY
End Function
;==================
;=============================
Function NewVector(x#, y#, z#)
v.TVector=New TVector
v
\x=x
v
\y=y
v
\z=z
Return Handle(v)
End Function
Function
DelVector(id)
v.Tvector=Object.Tvector(ID)
If v=Null Return
Delete
v
End Function
Function
LenVector#(ID)
v.Tvector=Object.Tvector(ID)
If v=Null Return 0
Return Sqr(v\x*v\x+v\y*v\y+v\z*v\z)
End Function
Function
MulScalar#(id1, id2)
v1.Tvector=Object.Tvector(id1)
If v1=Null Return 0
v2.Tvector=Object.Tvector(id2)
If v2=Null Return 0
Return v1\x * v2\x + v1\y * v2\y + v1\z * v2\z
End Function
Function
AngleVectors#(id1, id2)
v1.Tvector=Object.Tvector(id1)
If v1=Null Return 0
v2.Tvector=Object.Tvector(id2)
If v2=Null Return 0
Return ACos(MulScalar(id1, id2)/LenVector(id1)/LenVector(id2))
End Function
Function
TurnVectorXY(id, angle#)
v.Tvector=Object.Tvector(ID)
If v=Null Return
cn#=Cos(angle)
sn#=-Sin(angle)
oldX#=v\x
oldY
#=v\y
v
\x=oldX * cn - oldY * sn
v
\y=oldY * cn + oldX * sn
End Function
;===================

Function argb%(a%,r%=0,g%=0,b%=0)
Return (a Shl 24) Or (r Shl 16) Or (g Shl 8) Or b
End Function

Function
rgb%(r%,g%,b%)
Return (r Shl 16) Or (g Shl 8) Or b
End Function

Function
geta%(val%)
Return (val Shr 24)
End Function
Function
getr%(val%)
Return (val Shr 16) And ($000000FF)
End Function

Function
getg%(val%)
Return (val Shr 8) And ($000000FF)
End Function

Function
getb%(val%)
Return (val And $000000FF)
En
d Function





Trilliput 01.08.2006 20:19

Re: b3d хелп или описание
 
А будет ли такой способ работать например при использовании двух слоев текстур? Например если я создам terrain в 3D World Studio и налажу два слоя текстур.

ЗЫ Сколько слоев текстур поддерживает blitz или модели b3d? (То при использовании больше 2 слоев исчезал мягкий переход между текстурами, тоесть просто накладывалась текстура как бы квадратом)

Trilliput 01.08.2006 20:20

Re: b3d хелп или описание
 
А проще способы организовать подобное?

ЗЫ как то код заканчивается странно "Е [". Те там должно быть "Еnd function"? А после него какие то еще функции идут?

tormoz 01.08.2006 21:19

Re: b3d хелп или описание
 
Цитата:

Сообщение от Trilliput
А проще способы организовать подобное?

ЗЫ как то код заканчивается странно "Е [". Те там должно быть "Еnd function"? А после него какие то еще функции идут?

Исправил.
можешь упростить функцию.
GetBrushTexture - см эту команду

layer_t - слой текстуры. 0 - первый и тд

Trilliput 02.08.2006 10:06

Re: b3d хелп или описание
 
Фсего одна функция? А к чему весь остальной код? (Тяжело понимать свой код, а чужой и тем более)

impersonalis 02.08.2006 18:17

Re: b3d хелп или описание
 
Цитата:

Тяжело понимать свой код
комментируй =)

tormoz 02.08.2006 20:49

Re: b3d хелп или описание
 
Код:

Пикаешь террайн (модель) в нужной точке, потом получаешь текстуру
 
surf = PickedSurface()
brush=GetSurfaceBrush(surf)
texture_t =GetBrushTexture(brush,layer_t)


Trilliput 02.08.2006 21:35

Re: b3d хелп или описание
 
Ура работает! Ну хоть что то... :)


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

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