forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Анимация (и еще пару вопросов) (http://forum.boolean.name/showthread.php?t=4012)

Maestro 27.07.2007 01:02

Анимация (и еще пару вопросов)
 
Привет всем. Я только начал изучать Блиц, так что возникают некоторые проблемы .( Вот уже 2 часа бъюсь над ними... безрезультатно. Надеюсь здесь найдутся добрые люди :)

Вот в чем проблема: при загрузки модели и анимации к ней... она не хочет проигрываться при запуске программы. Надо например прописать If KeyDown(17) Animate Bochka. тогда после надатия клавишь меш анимируется. Как сделать, чтобы он анимировался сразу.

Это была первая проблема .) Теперь вторая: я загружал модель через LoadMesh, и просчитывал коллизию. А так как этот объект анимируется, приходится загружать через LoadAnimMesh, и тогда коллизия перестает просчитываться :(. А так как этот объект появляется в случайном месте, то я не могу на тех же координатах создать еще один объект (для коллизии). Помогите пожалуйста.

И еще вопросик. Здесь есть поиск по темам форума?

Raiter 27.07.2007 01:16

Re: Анимация (и еще пару вопросов)
 
1) Пиши не If KeyDown(17) Animate Bochka , а просто Animate Bochka
2) Никогда не слышал, что анимированные объекты не колизятся 0.о
Скорее ты что-то напутал с колизиями. Покажи код...

Цитата:

А так как этот объект появляется в случайном месте, то я не могу на тех же координатах создать еще один объект (для коллизии)
Почему не можеш?
Существуют такие команды, как: EntityX(entity),EntityY(entity),EntityZ(entity) которые возвращают соответственно координаты X,Y,Z объекта.

Юзаем эти команды...
PositionEntity Object2, EntityX(Object1), EntityY(Object1), EntityZ(Object1)

Maestro 27.07.2007 01:28

Re: Анимация (и еще пару вопросов)
 
Вот именно, что если писать просто Animate bochka, она не анимируется. Я даже в проверку отдельную прогу написал:

Graphics3D 800,600,16,1
SetBuffer BackBuffer()

cam=CreateCamera()
PositionEntity cam,0,10,0
lit=CreateLight()
PositionEntity lit,10,20,-20

bochka=LoadAnimMesh("bochka.b3d")
PositionEntity bochka,0,0,10
LoadAnimSeq bochka,"bochka.b3d"
PointEntity cam,bochka

Repeat
Animate bochka

UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End

бочка не анимируется. а если вместо Animate bochka вставить If KeyDown(17) Animate bochka, то после нажатия W, ана начинает анимироваться.

2) Странно. при LoadMesh все нармально, а при LoadAnimMesh коллизии пропадают... ну я еще попробую отдельно написать (как для анимации), может в коде что-то перепуталось.

Ага. попробую повазвращать координаты.
Благодарю.

moka 27.07.2007 01:32

Re: Анимация (и еще пару вопросов)
 
Цитата:

И еще вопросик. Здесь есть поиск по темам форума?
В самом верху, в меню.
Ещё есть у каждого поста кнопочка "Thanks", обычно форумчане любят если их поблагодорят такой кнопочкой ;)
Animate Bochka
нужно вызывать 1 раз. А именно:
If AnimSeq(Bochka)<>0 Anima Bochka
Сразу запуститься анимация.

Horror 27.07.2007 01:35

Re: Анимация (и еще пару вопросов)
 
Делай так ! когда ты создавал модель в максе
у нее было имя к примеру Box01
в блитце допиши этот код

bochka_mdl=LoadAnimMesh("bochka.b3d")
bochka=FindChild(bochka_mdl,"Box01")
PositionEntity bochka,0,0,10


команда ФиндЧаил ищет объект в твоей сцене
просто при экспорте из пепилаина появляется такая иерархие...

impersonalis 27.07.2007 01:39

Re: Анимация (и еще пару вопросов)
 
Конечно, ничего не коллизится - при аниммеш, как результат получаешь хендл "пивота", а не модель. Используй последний параметр
EntityType entity,collision_type[,recursive]
подними его.

Maestro 27.07.2007 10:05

Re: Анимация (и еще пару вопросов)
 
impersonalis, спасибо. заработало.)

MoKa, я уже пытался подобное написать. Анимации всеравно почемуто нет. и... ты наверно имел ввиду If AnimSeq(Bochka)=0 Anima Bochka :)

Horror, не совсем понял, чем лучше такие манипуляции.. но после них вообще ничего не работает :(. Пишет Entity has no animation/ или еще находит отговорки..

Maestro 27.07.2007 13:48

Re: Анимация (и еще пару вопросов)
 
Ура товариши! Все работает :) Я не в ту функцию писал .))

Maestro 28.07.2007 14:07

Re: Анимация (и еще пару вопросов)
 
А чем можно загрузить гиф анимацию? Через LoadSprite неполучается... Еще в хелпе нашел LoadAnimImage... но что-то та же история.
И как можно узнать какие форматы поддерживают некоторые команды, типа LoadSprite и LoadMesh?

Maestro 28.07.2007 21:52

Re: Анимация (и еще пару вопросов)
 
Ну помогите ктонибудь загрузить гиф анимацию...:''((

еще вопросик: можно ли сделать чтобу в общем цыкле (который идет бесконечно) некоторые команды прокрутились только один раз? например добаитьв цыкл вывод надписи... чтобы она один раз выводилась....

Raiter 28.07.2007 23:59

Re: Анимация (и еще пару вопросов)
 
Вложений: 2
Может я и ошибаюсь, но блиц гиф анимацию не воспроизводит...

LoadAnimImage юзается для анимационной ленты...

LoadAnimImage Изображение,ширина "кадра", высота "кадра", номер первого кадра ( 0 ), общее количество кадров

Отсчет кадров идет с 0. Тоесть 1 кадр = 0, 2 кадр = 1 и т.д

Для вывода изображения на экран юзаем DrawImage изображение, позиция X, позиция Y, кадр

Вот пример. Анимационная лента из 3 кадров (лежит в аттаче). При нажатии пробела, меняем кадр на следующий, при достижении предела кадров меняем на первый.

Код:

Graphics 800,600,32,1
SetBuffer BackBuffer()

Image = LoadAnimImage("animimg.png",64,64,0,3)
Frame = 0

While Not KeyDown(1)

If KeyDown(57) Then
        Delay(100)
        Frame = Frame + 1
        If Frame > 2 Then Frame = 0
End If

DrawImage Image,100,100,Frame

Flip
Cls
Wend

Цитата:

еще вопросик: можно ли сделать чтобу в общем цыкле (который идет бесконечно) некоторые команды прокрутились только один раз?
Очень просто. Вводиш переменную, которая будет отвечать за то, выполнилась уже эта команда или нет. В цыкле проверяем переменную. Если = 0, значит выполняем команду и меняем значение переменной на 1 (команда выполнена)... Вот и всё ;)

Код:

Graphics 800,600,32,1
SetBuffer BackBuffer()

Image = LoadAnimImage("animimg.png",64,64,0,3)
Frame = 0

ChangeFrame = 0

While Not KeyDown(1)

If ChangeFrame = 0 Then 
    Frame = Frame + 1
    ChangeFrame = 1
End If

DrawImage Image,100,100,Frame

Flip
Cls
Wend


Maestro 29.07.2007 01:04

Re: Анимация (и еще пару вопросов)
 
Ааа. так вод для чего LoadAnimMesh... мог бы и сам догадаться .))

А вот со вторым вопросом неувязачка вышла. Такой трюк проходитесли есть какая-то переменная, которую надо один раз поенять. Но как это применить если надо вывести текст или спрайт?

ЗЫ: все. доперло. Огромное спасибо.)

H@NON 29.07.2007 16:38

Re: Анимация (и еще пару вопросов)
 
Цитата:

Сообщение от Maestro
А чем можно загрузить гиф анимацию? Через LoadSprite неполучается... Еще в хелпе нашел LoadAnimImage... но что-то та же история.
И как можно узнать какие форматы поддерживают некоторые команды, типа LoadSprite и LoadMesh?

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

sample=OpenMovie("sample.gif")

repeat
drawmovie sample,x,y,w,h
renderworld()
flip
until keyhit(1)
closemovie sample
end

Maestro 01.08.2007 00:24

Re: Анимация (и еще пару вопросов)
 
Что-то прогал я прогал... все поперепрогал... теперь помошь нужна. Поможете? :support:

1. здесь был огромный вопрос, на который я нашел ответ в процессе его написания
2. неповерите, но я даже не начал вопрос писать, и уже сам допер. Хотя парился пол дня. Прям исцеление.
3. Блин. От радости третий вопрос забыл :(


Maestro 01.08.2007 01:36

Re: Анимация (и еще пару вопросов)
 
Вспомнил! Как можно узнать координаты объекта? Всмысле координаты того места, где он находится.


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

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