forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Как в 3ds моделе определить положение объекта (http://forum.boolean.name/showthread.php?t=14425)

radiantstudio 16.03.2011 11:10

Как в 3ds моделе определить положение объекта
 
Намоделил в Rhinoceros уровень. Экспортнул его в 3ds формат.
Нахожу всех детей и если имя LAMPA то пытаюсь поставить в его позицию сферу.
Загружаю так:
Код:

result:=xLoadAnimMesh(path);
  For i:=0 To xCountChildren(result)do
    begin
      node:=xGetChild(result,i);
      if node<>0
        then
          begin
            node_name:=Copy(xEntityName(node),0,5);
            writeln(node_name);
            if node_name='FLOOR'
              then
                begin
                  //..............................
                end;
            if node_name='LAMPA'
              then
                begin
                  xEntityAlpha(node,0.5);
                  tmp_spr:=xCreateSphere();
                  xEntityColor(tmp_spr,255,0,0);
                  xScaleEntity(tmp_spr,1,1,1);
                  xPositionEntity(tmp_spr,xEntityX(node,1),xEntityY(node,1),xEntityZ(node,1),1);
                end;
          end;
    end;
end;

Детей находит правильно, но xEntityX(node,1),xEntityY(node,1),xEntityZ(node,1) всегда возвращают нули. Тоесть не получается заменить node на другой объект с сохранением позиции. :(
Я что то делаю неправильно?
пробовал и так: xEntityX(node,0),xEntityY(node,0),xEntityZ(node,0)

radiantstudio 16.03.2011 22:34

Ответ: Как в 3ds моделе определить положение объекта
 
Перепробовал ещё пару 3Д редакторов. Формат 3ds адекватно экспортирует только сам 3dsmax. Причем теперь объекты, центры которых я поправил в Максе, при скейле аниммеша смещаются неправильно.

ПС: Есть у кого нибудь портэйбл 3Д макс с b3d пипилайном встроенным? (без пипилайна я уже нашел)

FireOwl 16.03.2011 22:38

Ответ: Как в 3ds моделе определить положение объекта
 
Pipeline - это плагин к 3D Max'у. Ставится отдельно. Поищи по форуму (Кнопка "Поиск" вверху), ссылок много давали на разные версии, и на оф. сайт.

LLI.T.A.L.K.E.R. 17.03.2011 00:21

Ответ: Как в 3ds моделе определить положение объекта
 
Исходя из http://www.forum.boolean.name/showpo...28&postcount=2
могу предположить, что возвращает позицию меша, а не чайлда.

Проверь так: смени позицию меша result:=xLoadAnimMesh(path)
И что возвратит позиция.

Это функция?
А, потом память очищаешь?

PHP код:

If then begin
For
end;
; ?? 
Next?
это на Xors-e так пишетсяПросто я с блитз3д 


FireOwl 17.03.2011 01:20

Ответ: Как в 3ds моделе определить положение объекта
 
Вообще Паскалем это все попахивает. Нэ?

radiantstudio 17.03.2011 09:34

Ответ: Как в 3ds моделе определить положение объекта
 
Цитата:

Сообщение от LLI.T.A.L.K.E.R. (Сообщение 183000)
Исходя из http://www.forum.boolean.name/showpo...28&postcount=2
могу предположить, что возвращает позицию меша, а не чайлда.

Оказалось что xEntityX() возвращает правильно, просто редакторы Rhino, AC3D, Blender все они, при экспорте в 3ds, центр объекта ставят в центр мира, тоесть в координату (0,0,0). В 3ДМаксе есть возможность править центр объекта (в Blender тоже, но он её не экспортирует), и тогда xEntityX правильно возвращает позицию. Но только если не использовать xScaleEntity.

ПС: Мне нравиться Rhino. Кто знает как в нем править центр обекта, подскажите?

Цитата:

Это функция?
А, потом память очищаешь?

PHP код:

If then begin
For
end;
; ?? 
Next?
это на Xors-e так пишетсяПросто я с блитз3д 


Да это функция LoadLevel(path). Это код на Дельфи (Паскаль).
Зачем тут очищать память?


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

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