forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Я новичок! (http://forum.boolean.name/showthread.php?t=377)

Arton 15.09.2013 05:34

Ответ: Я новичок!
 
Брррр... Ничего не понял.
Учитывая что ты пользуешься картогрфшопом, думаю косяк в нём, что-то непонятное с координатами :dontknow:

Лучше воспользуйся 3D Max 2008 с B3d Pipeline, для блица самое оно :super:

harmon 15.09.2013 05:40

Ответ: Я новичок!
 
Сохранение всё равно в b3d. Камера должна появиться на месте кубика - который в углу на против двери. Может какие-то преобразования нужны (из локальных в глобальные) координат?

Arton 15.09.2013 05:47

Ответ: Я новичок!
 
Цитата:

Сообщение от harmon (Сообщение 267096)
Сохранение всё равно в b3d. Камера должна появиться на месте кубика - который в углу на против двери. Может какие-то преобразования нужны (из локальных в глобальные) координат?

Ну и что что в b3d.
Преобразования не какие ненужны, всё должно и так работать.
Может конечно в коде косяк не увидел, однако уверен что дело в картографе.

Я давным давно его забросил, когда столкнулся с подобными инфернальными проблемами.

Mr_F_ 15.09.2013 14:00

Ответ: Я новичок!
 
проверь, находится ли искомый объект в б3д.
сдаётся мне, что он даже не находится, и камера остаётся в нулевой точке.
объект может быть чайлдом другого объекта а не корня модели - искать надо тогда рекурсивно.

harmon 15.09.2013 14:02

Ответ: Я новичок!
 
Цитата:

Сообщение от Mr_F_ (Сообщение 267104)
проверь, находится ли искомый объект в б3д.
сдаётся мне, что он даже не находится, и камера остаётся в нулевой точке.
объект может быть чайлдом другого объекта а не корня модели - искать надо тогда рекурсивно.

Он находится на месте. Код с медиеей во вложении (в 105 сообщении). Как найти рекурсивно?

tormoz 15.09.2013 16:17

Ответ: Я новичок!
 
Цитата:

Сообщение от harmon (Сообщение 267092)
Проверил координаты всех CHILD - они все 0,0,0.

Это локальные координаты чайлда относительно родителя. Тебе нужны глобальные (поставь последний параметр в функциях в 1)
PositionEntity cam%,EntityX(pl%,1),EntityY(pl%,1),EntityZ(pl%,1), 1

harmon 15.09.2013 16:30

Ответ: Я новичок!
 
EntityParent vr1%,0
cam%=CreateCamera (vr1%)
PositionEntity cam%,EntityX(vr1%,1),EntityY(vr1%,1),EntityZ(vr1%, 1),1

Так тоже не получилось. Камера получается в середине а не на месте кубика.

tormoz 15.09.2013 17:57

Ответ: Я новичок!
 
Цитата:

Сообщение от harmon (Сообщение 267112)
EntityParent vr1%,0
cam%=CreateCamera (vr1%)
PositionEntity cam%,EntityX(vr1%,1),EntityY(vr1%,1),EntityZ(vr1%, 1),1

Так тоже не получилось. Камера получается в середине а не на месте кубика.

Значит физический центр кубика не совпадает с его геометрическим центром.
Это косяк редактора моделей

Код:

FitMesh vr1, -(MeshWidth (vr1) / 2), -(MeshHeight (vr1) / 2), -(MeshDepth (vr1) / 2), MeshWidth (vr1), MeshHeight (vr1), MeshDepth (vr1)
cam%=CreateCamera (vr1%)
PositionEntity cam%,EntityX(vr1%,1),EntityY(vr1%,1),EntityZ(vr1%,1),1


harmon 15.09.2013 18:54

Ответ: Я новичок!
 
Вложений: 1
Переделал пропал кубик.

RBK 15.09.2013 19:35

Ответ: Я новичок!
 
Проблема в особенности работы редактора: координаты всех вершин заданны от единого центра. Координаты обьектов равны нулю и не меняются.

Тебе нужно задавать координаты точкой.

tormoz 15.09.2013 20:09

Ответ: Я новичок!
 
Вот твой кубик: под землей с сбитым центром

Код:

Graphics3D 800,600,32,2
cam%=CreateCamera ()
CameraRange cam,0.1,10000


vr%=LoadAnimMesh ("11.b3d")
ScaleEntity vr%,0.1,0.1,0.1
SetBuffer BackBuffer ()
;Чтение B3D
For q%=1 To CountChildren (vr%)
        vr1%=GetChild (vr%,q%)
        vrt$=EntityName$(vr1%)
        If vrt$<>"" Then
                vrt1$=Lower$(vrt$)
                If Instr(vrt1$,"door")>0 Then;Дверь
                        ;EntityParent vr1%,0
                        t%=CopyEntity (vr1%)
                        ;FreeEntity vr1%
                End If
                If Instr(vrt1$,"geroy")>0 Then;главный герой
                        EntityParent vr1%,0
                        ;pl%=CopyEntity (vr1%,0)
                        hero=vr1
                        FitMesh vr1, -(MeshWidth (vr1) / 2), -(MeshHeight (vr1) / 2), -(MeshDepth (vr1) / 2), MeshWidth (vr1), MeshHeight (vr1),MeshDepth (vr1)
                        PositionEntity cam%,EntityX(vr1%,1),EntityY(vr1%,1),EntityZ(vr1%,1),1;Загвоздка помоему где то тут!!!!!!!!!!!!!!!!!!!!!!!!!
                End If
        End If
Next


MoveEntity cam%,0,0,-10


r%=1
u%=1

While Not KeyHit(1)
old=MilliSecs ()
TurnEntity hero,0,0,.4

If KeyDown(17) Or MouseDown(1) Then MoveEntity cam%,0,0,1;вперед
If KeyDown(31) Or MouseDown(2) Then MoveEntity cam%,0,0,-1;назад
If KeyDown(30) Then TurnEntity cam%,0,1,0;влево
If KeyDown(32) Then TurnEntity cam%,0,-1,0;вправо
r%=r%+u%
If r%=20 Then u%=-1
If r%=1 Then u%=1
MoveEntity t%,0,u%,0
RenderWorld()
Text 10,20,EntityX(cam)
Text 10,40,EntityY(cam)
Text 10,60,EntityZ(cam)
Flip
Wend


Черный крыс 15.09.2013 20:41

Ответ: Я новичок!
 
Не юзай 3Д ворлд студио, он УГ. + коверкает имена обьектам и задает единый центр ко всем префабам. ( последний недостаток можно вылечить при загрузке )
Не юзай гайлс, он к иерархии добавляет корневой пивот со всякой ересью в имени.

Юзай 3Дмакс + б3дПиплайн.

St_AnGer 02.10.2013 12:37

Ответ: Я новичок!
 
Дабы не плодить тем спрошу тут.

Дано:
текстура размером 64х64 (пиксели);
квад размером 1х1 (единица в блице);

Вопрос:
как сделать что бы на кваде эта текстура отображалась как 128х128, но в добавленой части картинка не дублировалась?

т.е. из вот этого (на уровне текстуры, а не объекта):

Код:

______
| oo |
| oo |

получилось вот так:
Код:

__________
| oo      |
| oo      |
|        |
|        |

а не так (этот результат достигается с помощью ScaleTexture (tex, .5, .5)):
Код:

__________
| oo  oo |
| oo  oo |
| oo  oo |
| oo  oo |

Функция создания квада следующая:
Код:


Function CreateQuad(XSize#=1, ZSize#=1, tBrush = 0)
        Local Mesh, Brush, Surf
        Mesh=CreateMesh()
       
        If tBrush=0
                Brush = CreateBrush(255, 255, 255)
                Surf=CreateSurface(Mesh,Brush)
        Else
                Surf=CreateSurface(Mesh,tBrush)
        End If
       
        Local t=AddVertex (Surf,-XSize,-ZSize,0,0,1)
        AddVertex (Surf,-XSize,ZSize,0,0,0)
        AddVertex (Surf,XSize,ZSize,0,1,0)
        AddVertex (Surf,XSize,-ZSize,0,1,1)
       
        AddTriangle Surf,t,t+2,t+3
        AddTriangle Surf,t,t+1,t+2
        EntityFX Mesh, 1+4
       
        Return Mesh
End Function

Есть мысль на счёт создания текстуры ручками, но слишком огромное количество текстур сразными именами. Китайский код не хочу.

SBJoker 02.10.2013 12:52

Ответ: Я новичок!
 
ЕМНИП включить клампинг для текстуры по X и Y и задать текстурные координаты правильно.

Кирпи4 02.10.2013 13:47

Ответ: Я новичок!
 
Добавляй во флаги грузимой текстуры 16+32


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

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