forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Заметка о пипелайне для 3ds max (http://forum.boolean.name/showthread.php?t=5708)

tormoz 02.03.2009 21:56

Ответ: Заметка о пипелайне для 3ds max
 
Цитата:

Сообщение от ELIAS (Сообщение 99363)

Заранее спасибо. :) Жду...

Код:

Graphics3D 1280, 1024, 32, 1



cam=CreateCamera()
CameraClsColor cam, 0, 100,255
MoveEntity cam,0,0,-50
lit=CreateLight()

robo=LoadAnimMesh("Robot.b3d")
ScaleMesh robo, 100,100,100

For i=1 To CountChildren(robo)
  child=GetChild(robo,i)
  If child<>0
  Animate child
 EndIf
Next



For i=1 To 10
        e=CreateCube()
        ScaleEntity e, 4,4,4
        PositionEntity e, Rand(-100,100),Rand(-100,100),Rand(-100,100)
Next



Repeat
       
        If KeyDown(200)=1 Then MoveEntity cam, 0,0,1
        If KeyDown(208)=1 Then MoveEntity cam, 0,0,-1
       
        RotateEntity cam, EntityPitch(cam)+MouseYSpeed()*0.2, EntityYaw(cam)-MouseXSpeed()*0.2 ,0
       
       
        MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
       
        UpdateWorld
    RenderWorld
       
    Flip
       
Until KeyHit(1)
End
;~IDEal Editor Parameters:
;~C#Blitz3D


ABTOMAT 02.03.2009 22:44

Ответ: Заметка о пипелайне для 3ds max
 
Цитата:

АВТОМАТ, если получилось анимировать, почему бы не бросить код???
Шоб ты сам в хелп полез, а то привыкнешь...
Я и так уже весь алгоритм описал в посте
Тормоз, зря...

ELIAS 03.03.2009 17:59

Ответ: Заметка о пипелайне для 3ds max
 
ммм....Вы не поняли:(
...
Или я не понял?
...
А потом мне в цикле надо будет обязательно менять последовательность анимации, ну будет ходьба, бег, прыжок, падение и тп. Мне это всё так и менять циклом??? да?

Я просто в идеале это видел иначе. я думал что можно создать какую-нибудь переменную-указатель, которая и будет содержать в себе пути ко всем чилдам.
Но впринципе! Создаем функцию - туда этот цикл! Из параметров - модель, скорость, секвенция, плавность, зацикленность! И всё будет! :)

Спасибо, tormoz!!! :)

Код:

Шоб ты сам в хелп полез, а то привыкнешь...
Я и так уже весь алгоритм описал в посте
Тормоз, зря...

Ну АВТОМАТ! Что такое, я итак всё на блюдечке вам поднёс, только код отредактируйте! И модель сделал, и экспортил её, и код весь необходимый уже написал!... Некоторые...Даже многие, на словах туго понимают, я в том числе.

Цитата:

Перебирай каждый чайлд GetChild, CountChildren (нумерация с единицы)
Применяй к нему Animate
Код:

For i=1 To CountChildren(robo)
  child=GetChild(robo,i)
  If child<>0
  Animate child
 EndIf
Next

ИМХО, гораздо эффективнее в этом случае объяснить кодом.
Но всё-равно спасибо! :)

ABTOMAT 04.03.2009 00:11

Ответ: Заметка о пипелайне для 3ds max
 
Чтобы поменять анимацию в твоём случае - да, опять перебирать чилды.
Вообще например если есть модель человека - то Skin там один, так что проблем не возникает. Если Skin один то чаще всего у него индекс 1 так что зная точно индекс можно сразу прописать, без цикла: Animate GetChild(Model,1), или можно FindChild'ом, но если их несколько то тут проще перебором, кроме специальных случаев, когда нужно анимировать например только голову или только торс.

З.Ы. Stop offtop

tormoz 04.03.2009 03:20

Ответ: Заметка о пипелайне для 3ds max
 
Цитата:

Сообщение от ELIAS (Сообщение 99458)
И модель сделал, и экспортил её, и код весь необходимый уже написал!... Некоторые...Даже многие, на словах туго понимают, я в том числе.

это сделал только потому, что мне моделько понравилось :-D

Вот бы сделать аркадко типа "Приключения кубо-менчика в кубостране"

В стиле марио, только 3д

кстати, движок уже готофф.
Токо уровни подавай и героев
(делал как прототип одной фирме. в связи с кризисом проект заморозили, движок разрешили использовать куда угодно)

ELIAS 08.03.2009 00:56

Ответ: Заметка о пипелайне для 3ds max
 
Цитата:

хз хз... я ваще всегда делал не как тормоз, просто один мешь для всего, и всё отлично ) попробуй на всякий случай
NitE, поделись секретом, как это ты так модель экспортишь???
Я с тех пор как способом тормоза стал пользоваться, так больше у меня такого не получалось, чтобы анимировалась сама модель, а не её чайлды.
Заскринь пожалуйста настройки пайплайна при твоём экспорте и выложи ту пару строчек, обслуживающих твою анимацию.

NitE 08.03.2009 01:31

Ответ: Заметка о пипелайне для 3ds max
 
фигасе ты, спросил тоже - я уж забыл всё и о чем разговор...
но вообщем я экспортил отдельно модель, отдельно анимацию(костную)
в первом случае убирал галочку "экспорт бонес" во втором прятал каркас и только кости с анимацией экспортил...
ну а код это ваще ппц, было что-то вроде
Код:

model=loadanimmesh("shit.b3d")
anim=loadanimmesh("shitani.b3d")
animate model,0,0,anim,0


ELIAS 08.03.2009 12:36

Ответ: Заметка о пипелайне для 3ds max
 
Аа..Найт, дак это получается что у тебя совершенно тоже самое, что и у тормоза, только тормоз анимацию и модель держит в одном файле, и потом растаскивает их уже в блитце, а ты их 3дмаксом уже разделяешь.

Только вот, что. Вопрос уважаемому tormoz`у:
Нельзя ли цикл сканирования чайлдов в твоём способе заупскать лишь один раз, и все чайлды модели как-нибудь тут же связывать...Тогда анимировать придётся только что-то одно... В таком случае гораздо удобнее будет управлять секвенцией!!! А то если делать ту функцию с циклом, тогда секвенцию придётся определять только аргументами начального кадра и конечного:( А я хочу чтобы в аргумент секвенции попадала переменная секвенции как обычно типа playerrun Или playerjump.
Я то думал, что секвенцию можна взять с любой анимации, ведь если к переменно приравнять секвенцию, то эта перемеенная равна натуральному числу! Никаких ссылок на объект и тп((( Но я ошибся.

ABTOMAT 08.03.2009 15:24

Ответ: Заметка о пипелайне для 3ds max
 
Сделай рекурсивную функцию, которая сканирует анимирует каждый чайлд.
Рекурсивная - это когда функция сама себя вызывает

ELIAS 08.03.2009 16:47

Ответ: Заметка о пипелайне для 3ds max
 
Не понял, как мне поможет рекуссивная функция... вообще чем она от обычной то отличается..??? мы и обычную можем в цикл под условие поставить...-будет вызываться!
Аха! Я и забыл спросить! А нельзя никак экспотрить модель в один файл, и анимировать также просто как найт. Ведь можно же!!! Но тут какие то особенности чтоли при экспорте...неполучается:(((((

Ну тоесть получится такой код:
Код:

model=loadanimmesh("shit.b3d")
run=ExtractAnimSeq(model,10,70)
animate model,0,0,run,0

Тут всё от экспорта вроде зависит, но я уж много вариантов перепробовал - не смог такого добиться.
Возникает вопрос "А возможно ли это впринципе?"

NitE 08.03.2009 19:33

Ответ: Заметка о пипелайне для 3ds max
 
насколько я понял рекурсивная функция нужна для поиска всех чайлдов, тоесть вот ищем чайлдов - нашли и ищем уже чайлдов в чайлде всё той-же функцией...
и что мешает так-же как я экспортить ?

tormoz 09.03.2009 03:11

Ответ: Заметка о пипелайне для 3ds max
 
Если заскинен один объект - один объект и анимируется
Если заскинено несколько объектов - нужно их все искать и анимировать

По уму делается одним объектом, если не нужно использовать отдельные анимации (например, бежим вперед, стреляем вбок, вперед, и тд)


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

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