forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=15)
-   -   FAQ по B3D (http://forum.boolean.name/showthread.php?t=4251)

Bagration 11.11.2007 17:09

Re: FAQ по B3D
 
Спасибо всем кто вызвался помочь мне с Rects-ами в FastImage. Оказывается все было просто, надо было просто скачать апдейт либы 1.6, тама уже есть команда на проверку сопрекосновения точки с имажой - TestImage. Вообщем всем ссори за беспокойство.
P.S. либа тут http://blitz.pp.ru/forum/showthread....=&pagenumber=1 в первом посту

Bagration 01.12.2007 17:31

Re: FAQ по B3D
 
У меня вопрос: как сделать спрайт двухсторонним, что бы сделать иммитацию пули. А то спрайт имеет только одну сторону. Может есть какойто флаг? В справке я почитал вот это: "Вы будете видеть только одну сторону спрайта, если только не используете флажок EntityFX 16", но увы я таки не нашел где включить этот флаг.
P.S. у обоих сторон одна и таже картинка.

tormoz 01.12.2007 20:30

Re: FAQ по B3D
 
EntityFX entity,16

NovICE 14.12.2007 09:38

Re: FAQ по B3D
 
может кто-то знает. у меня такая проблема: создаю в 3ДМаксе 7.0 простую модельку, накладываю на нее скин, присоединяю кости и создаю анимацию автоматической расстановкой ключей (Автокей). затем экспортирую в формат .b3d. потом этот файл вставляю в Блитц. короче сама модель ходит в пространстве а вот самой анимации модели нет. в чем дело? помогите пжалста кто может и хочет)) заранее спасибо!

moka 14.12.2007 13:59

Re: FAQ по B3D
 
NovICE, найди у неё чайлд, самый первый обычно, это и есть сама модель. Когда ты грузишь как анимированную, получаеться ты грузишь пачку, поэтому анимировать нужно один из её чайлдов к которому прикреплен скелет, название обычно совпадает как в 3д максе.
Юзай FindChild, CountChildren, GetChild, EntityName функции для нахождения.

avel 15.12.2007 04:06

Re: FAQ по B3D
 
2NovICE то, что тебе уже посоветовали, плюс возожно при экспорте у тебя отсутствует анимация вертексов. проверь правильность расстановки всех галочек... и опиши подробнее как и что ты делаешь, поэтапно... тогда будет проще тебе помочь и найти ошибку.

Alex_Noc 16.12.2007 00:24

Re: FAQ по B3D
 
Всем доброго времени суток!
Хотел задать вопрос который меня очень беспокоит -
- как лучше сделать анимированный обьект - например нам надо чтобы сфера подпрыгивала бесконечно : так что будет лучше - анимировать сам обьект или прикрутить к нему кость и анимироватькость.? Заранее благодарен за ответ!
(програмировать анимацию не предлагать)

ABTOMAT 16.12.2007 01:21

Re: FAQ по B3D
 
Alex_Noc, ИМХО один кер.
Только если ты сделаешь просто объектом, то те нада будет делать примерно так:
Шар = LoadAnimMesh ("путь к модельге шара")
Animate Шар

А если костями, то

Animate FindChild (Шар, "имя объекта в максе")

второе ИМХО геморройнее,
хотя если заюзаешь кости, можно сделать, например, чтоб в прыжке шарик вытягивался, а при контакте с землёй сплющивался.


В общем, решай по своим потребностям.

moka 16.12.2007 11:33

Re: FAQ по B3D
 
Только не:
Шар = LoadMesh ("путь к модельге шара")
А:
Шар = LoadAnimMesh ("путь к модельге шара")

NovICE 16.12.2007 11:45

Re: FAQ по B3D
 
PLEASE! HELP ME!
последую твоему совету Avel, и постараюсь объяснить все поконкретнее:
1. вот полный код:
strelki: LEFT, RIGHT - povorot, UP\DOWN - camera UP\DOWN
Код:

; A - vpered, Z - nazad
Graphics3D 800,600,32,2
Global ssp# = .05
Type Player
Field entity,model
Field anim_speed#,player_y#
End Type
Type SmartCam
Field entity,camera,target, heading
End Type
 
Const TYPE_PLAYER=1, TYPE_TARGET=2, TYPE_WALL=3
Collisions TYPE_PLAYER,TYPE_WALL,2,2
Collisions TYPE_TARGET,TYPE_WALL,2,2
Global level,player_model
LoadGameObjects()
player.Player=CreatePlayer( 0,5,0 )
camera.SmartCam=CreateSmartCam( player\entity )
While Not KeyHit(1)
UpdateGame()
UpdateWorld
For c.SmartCam=Each SmartCam
UpdateSmartCam( c )
Next
RenderWorld
Flip
Wend
End
;--------- Functions -------------
Function UpdateGame()
For p.Player=Each Player
UpdatePlayer( p )
Next
End Function
 
Function CreatePlayer.Player( x#,y#,z# )
p.Player=New Player
p\entity=CreatePivot()
p\model=CopyEntity( player_model,p\entity )
p\player_y=y
PositionEntity p\entity,x,y,z
EntityType p\entity,TYPE_PLAYER
EntityRadius p\entity,2
Return p
End Function
 
Function UpdatePlayer( p.Player )
 
If KeyDown(203) ;left/right
TurnEntity p\entity,0,5,0
Else If KeyDown(205)
TurnEntity p\entity,0,-5,0
EndIf
 
If KeyDown(30) ;forward
If p\anim_speed<=0
p\anim_speed=1.75
Animate p\model, 1, 1.5, 1, 10
EndIf
MoveEntity p\entity,0,0,1
Else If KeyDown(44) ;back
If p\anim_speed>=0
p\anim_speed=-1.75
Animate p\model, 1, 1.5, 1, 10
EndIf
MoveEntity p\entity,0,0,-1
Else If p\anim_speed ;stop animating
p\anim_speed=0
Animate p\model, 2, 1, 0, 10
EndIf
 
ty#=EntityY(p\entity)
y_vel#=(ty-p\player_y)
p\player_y=ty
y_vel=y_vel-.5
TranslateEntity p\entity,0,y_vel,0
 
End Function
Function CreateSmartCam.SmartCam( entity )
c.SmartCam=New SmartCam
c\entity=entity
c\camera=CreateCamera()
 
c\target=CreatePivot( entity )
PositionEntity c\target,0,5,-10
EntityType c\target,TYPE_TARGET
 
c\heading=CreatePivot( entity )
PositionEntity c\heading,0,0,20
Return c
End Function
Function UpdateSmartCam( c.SmartCam )
 
If KeyDown(200)
TranslateEntity c\heading,0,-3,0
Else If KeyDown(208)
TranslateEntity c\heading,0,+3,0
EndIf
 
dx#=EntityX(c\target,True)-EntityX(c\camera,True)
dy#=EntityY(c\target,True)-EntityY(c\camera,True)
dz#=EntityZ(c\target,True)-EntityZ(c\camera,True)
 
TranslateEntity c\camera,dx*ssp,dy*ssp,dz*ssp
 
PointEntity c\camera,c\heading
 
PositionEntity c\target,0,0,0
ResetEntity c\target
PositionEntity c\target,0,20,-15
End Function
Function LoadGameObjects()
level=LoadMesh( "maps\tur.b3d" )
ScaleEntity level,.15,.15,.15
EntityType level,TYPE_WALL
 
player_model = LoadAnimMesh( "ROBOT\torus.b3d" )
ScaleEntity player_model,.2,.2,.2
LoadAnimSeq player_model, ("ROBOT\walk.b3d" )
TurnEntity player_model,0,-180,0
HideEntity player_model
End Function

это не мой код. я его "стырила" из чужого исходника. сама еще не умею так.
Итак, я запустила МАКС и создала в сцене примитив цилиндр. Перевела его сетку в эдитейбл мэш. Затем наложила модификатор скин. Создала два бокса. поставила один на другого и расположила их внутри цилиндра и присоединила их в качестве костей. короче получилаось такое примитивное подобие ноги, сгинающейся в колене. И теперь перехожу File -> Export и сохраняю в формате b3d. под именем torus(для этого я установила B3D Pipeline). теперь после этого включила автоматическую расстановку ключей . анимация в 40 кадров. с 0 по 10 я с помощью наклоняю верхний бокс. с 10 по 20 возвращаю его в исходное положение. с 20 по 30 также наклоняю только в другую сторону и с 30 по 40 снова в обратном направлении возвращаю в исходное положение.
И все. Дальше опять перехожу File -> Export и сохраняю в формате b3d. под именем walk.
Еще скажу что когда экспортирую в формат .b3d, появляется окно с опциями экспорта. В этом окне галочки выставлены абсолютно везде уже с самого начала. (сама я не знаю какие именно галочки надо проставлять)
Теперь запускаю Блитц3Д и в вышеприведенном коде использую свои файлы.
нажимаю F5. короче цилиндр в пространстве есть. нажимаю клавиши A и Z для перемещения. И тут цилиндр хотя сам двигается (или правильнее скользит как и все объекты по умолчанию), самой анимации цилиндра, а он должен нагинаться в разные стороны при передвижении, нет.
вот такая вот загогулина.
А мог бы кто нибудь показать как именно надо ипользовать в Блитце модели, сохраненные в формате b3d. если можно конечно. а то может код неправильный?

Заранее Спасибо

ABTOMAT 16.12.2007 18:24

Re: FAQ по B3D
 
MoKa, исправил!
NovICE, насчёт флажков, их надо расставлять вот так: (я объяснил наиболее важные)


1. Кликаешь Preview, если в нём всё верно работает, и анимация играется, то всё верно экспортнулось.
2. Экспортаешь в файл.
3. Загружаешь в игре при помощи LoadAnimMesh()
Мой привер:
mesh = LoadAnimMesh ("models\headcrab.b3d")
4. Самое важное! Т.к. у нас анимация костная, то анимировать надо не весь AnimMesh, а тот объект, который у нас анимирован костями. Для этого в Максе мы узнаём имя нашего объекта (в моём случае - это хедкраб, его имя в максе: smdimport)
5. При помощи FindChild "выделяем" этот объект в блитзе:
crab = FindChild(mesh, "smdimport")

Название объекта обязательно в кавычках!

6. Анимируем уже именно этот объект, который мы нашли:

Animate crab

Итог - краб устаршающе клацает клешнями, готовясь наброситься :)

Конкретно в твоём коде:

в функции UpdatePlayer нужно писать не:

Animate p\model, ...

а:

Animate FindChild (p\model, "имя объекта в кавычках"), ...

Если тебе непонятны какие-то команды, смотри о них подробно в Блитзевском хелпе.

Цитата:

сама еще не умею так
учись, на чужом коде долго не просидишь...

avel 17.12.2007 01:20

Re: FAQ по B3D
 
2Alex_Noc если объект простой типа шар, то проще обойтись без костей, конечно.

avel 17.12.2007 04:01

Re: FAQ по B3D
 
2NovICE
Цитата:

это не мой код. я его "стырила" из чужого исходника. сама еще не умею так.
а так и не надо... этож ужас! ошибки грубейшие, написано все, извените, через жопу... не, так не надо... все куда проще...
Цитата:

галочки выставлены абсолютно везде уже с самого начала.
вот тут, видимо, и ошибка...
про код в блице и галочки тебе, вроде, уже сказали. ну, в принципе, если непонятно, то выставляй все, что слева и убирай все, что справа... а код можно посмотреть в стандартном примере для анимации из справки блица. только не забудь про файндчилд...

avel 17.12.2007 04:03

Re: FAQ по B3D
 
кто-нибудь знает, почему может не работать SetGamma?
(видеокарта Radeon 9550)
не работает даже стандартный пример...

и еще вопрос немного не в тему...
кто-нибудь знает, где можно надыбать модели реального огнестрельного оружия(желательно посовременнее) или хотя бы чертежи и картинки, чтобы можно было смоделить.

HolyDel 17.12.2007 13:10

Re: FAQ по B3D
 
Цитата:

кто-нибудь знает, почему может не работать SetGamma?
На всякий случай - не работает в оконном режиме.

ABTOMAT 17.12.2007 13:22

Re: FAQ по B3D
 
Цитата:

и еще вопрос немного не в тему...
кто-нибудь знает, где можно надыбать модели реального огнестрельного оружия(желательно посовременнее) или хотя бы чертежи и картинки, чтобы можно было смоделить.
www.the-blueprints.com - чертежи. моделль.

avel 18.12.2007 05:15

Re: FAQ по B3D
 
Цитата:

На всякий случай - не работает в оконном режиме.
спасибо, конечно, но это я в курсе. перепробывал все варианты... не работает и все тут! :(

NovICE 18.12.2007 11:09

Re: FAQ по B3D
 
Этот вопрос уже задавался, но я не увидела на него ответ. Поэтому задю его снова в надежде на вашу помощь:

У меня седьмой МАКС а вопрос по поводу установки и использования плагина B3D Pipeline

1. Для каких версий 3dsmax подходит плагин? На семёрку или на восьмёрку ставится?

2. Я установил плагин B3dPipeline (перекинул все папки с файлами в max) и при входе в 3dsmax7 у меня возникает такое предупреждение "Loading DLLs ! DDL <C:\3dsmax7\plugins\b3dexp.dle> failed to initialize. Error code: 127 - Не найдена указанная процедура." Я так понимаю этот фаил отвечает за экспорт файлов. Т. к. после того как я зашел в max, у меня не было путя для сохранения File>Export...>*b3d. :SOS:
Или я что то не правельно сделал или этот плагин не подходит для данной версии max? Хотя в матерьялах, что то появилось.

3. И как установить или пользоватся B3dExtensions?

P.s. Если кто знает, как решить эти проблемы, подскажите мне пожалуйста.

HolyDel 18.12.2007 11:18

Re: FAQ по B3D
 
NovICE,
1. работает на 8-ом точно, на 70ом тоже должен по идее.
2. скопируй dle файл из папки patch_max6 (что то типа етого)
3. мм. там есть примеры. к проекту надо будет приинклюдить соответствующий файл. при выгрузке в b3d надо поставить соответствующие галки. лично мое мнения - забить на bb extensions.

ABTOMAT 18.12.2007 12:51

Re: FAQ по B3D
 
1. работает с максами:
- 5
- 6-8 (нужен патч Max6_patch.zip), я пользуюсь седьмым максом

2.
Цитата:

"Loading DLLs ! DDL <C:\3dsmax7\plugins\b3dexp.dle> failed to initialize. Error code: 127 - Не найдена указанная процедура."
Такое у меня было с 9-м Максом, к которому Пайплайна нету в принципе.

Для 7-го поможет патч ,что лежит в архиве Max6_patch.zip

3. А оно тебе надо?) ИМХО в 99% случаев они - лишнее, но если очень надо, чти хелп.

HolyDel 18.12.2007 12:55

Re: FAQ по B3D
 
Цитата:

"Loading DLLs ! DDL <C:\3dsmax7\plugins\b3dexp.dle> failed to initialize. Error code: 127 - Не найдена указанная процедура."
такое у меня было с 8-м максом, когда я не поставил патч.

avel 20.12.2007 03:05

Re: FAQ по B3D
 
2NovICE ну, повторю то, что уже сказано...
1 на седьмом работает. у меня у самого седьмой и все путем. так же на 5, 6, 8. на девятом к сожалению не прет...
2 чтобы ошибки не было надо поставить патч. иначе с 6 по 8 версии будет выдаваться эта ошибка.
3 устанавливать ничего не надо, они ставятся вместе с пипелайном. использовать прямо из свойств объектов. если все правильно установлено, то появляются доп. команды. при экспорте необходимо выставить галочки (те, что справа). но ИМХО использовать их особого смысла нет... проще все это сделать в самом блице. потому что возникают глюки, несостыковки и т. д. про команды читай подробнее в хелпе пипелайна или спрашивай про конкретную команду.

avel 22.12.2007 04:31

Re: FAQ по B3D
 
вот, новая оффлайн версия FAQ по B3D.
что нового:
1) я слегка отформатировал все, что там было.
2) добавил новые посты, которых не было в старой оффлайн версии.
3) перераспределил все по разделам.
4) добавил некоторые новые вопросы, которых здесь нет, так что смотрите.
5) отдельно выделил участки с кодом.
6) преобразовал все в формат *.chm

весит это чудо всего 50 кбайт, а полезности - на все 100%! я и сам, бывает, забуду какую-нибудь функцию, или, просто, лень писать по памяти, и тут фак приходит на помощь... все основные вопросы, возникающие в процессе программирования на блице у новичков и не только тут рассмотрены. изложено все максимально понятно и при этом достаточно локанично.
короче, юзайте наздоровье! надеюсь, что я не зря потратил свое время и оно вам будет полезно.

качать тут

ABTOMAT 22.12.2007 12:13

Re: FAQ по B3D
 
круто :super:
только подредактируй ещё на предмет орфографических ошибок (они редки, но как-то очень досадны:
Цитата:

Вопрос: при использовании команды Animate объект начинает двигаться ни тогда, когда нажата клавиша, а когда она отпускается. почему?
)

Цитата:

Вопрос: как использовать кавычки в строковой переменной?

Ответ: используй вместо кавычек команду Chr(34):
вот этого я до сих пор не знал


Цитата:

обязательно должен быть файл Имя_Библиотеки.decls - или какой-нибудь похожий с описанием всех функций нашей библиотеки (его мы обязательно кидаем в папку "userlibs", а потом и в папку нашего проекта)
ИМХО деклз кидать в папку с игрой вовсе необязательно, может, ты хотел сказать DLL ?

Цитата:

Вопрос: как сделать в программе выбор из нескольких вариантов?

Ответ: удобнее всего пользоваться структурой Select:



Код:



Select переменная

Case первое принимаемое значение

;выполняемые действия

...

Case N-ное принимаемое значение

;выполняемые действия

Default

;действия, выполняемые по умолчанию

End Select
Сделай, плз, чтоб было не "по умолчанию", а "когда ни одно из указанных выше значений переменная не приняла" или "когда ни одно указанное выше значение не подходит", так будет, ИМХО, понятнее :)

NovICE 15.01.2008 07:54

Re: FAQ по B3D
 
У меня вопрос: как сделать, чтобы объект начинал анимацию при нажатой кнопке, а при отжатой прекращал и двигаться и "анимироваться".

У меня вот такой простенький код:

Graphics3D 640,480,16,2
SetBuffer BackBuffer()
HidePointer
cam=CreateCamera(player)
PositionEntity cam,0,10,-10
TurnEntity cam,0,0,0
lit=CreateLight()
TurnEntity lit,45,45,0
pln=CreatePlane()
tex=LoadTexture("12.jpg")
ScaleTexture tex,10,10
EntityTexture pln,tex
player=LoadAnimMesh("bbb.b3d")
ScaleEntity player,.1,.1,.1
TurnEntity player,0,180,0
Repeat
If KeyDown(17) Animate FindChild(player,"bbb")
RenderWorld()
UpdateWorld()
Flip
Until KeyHit(1)
End

но когда запускаю, объект анимируется когда я нажимаю кнопку, НО когда отпускаю объект не прекращает анимацию..

что делать?

avel 15.01.2008 08:23

Ответ: FAQ по B3D
 
NovICE перечитай весь FAQ этот вопрос уже есть и на него отвечено! смотри это:
Цитата:

вопрос: при использовании команды Animate объект начинает двигаться ни тогда, когда нажата клавиша, а когда она отпускается. почему?

jimon 15.01.2008 08:49

Ответ: FAQ по B3D
 
NovICE
Код:

If KeyDown(17) Then
действия по анимации
Else
действия чтобы остановить анимацию
End if


avel 15.01.2008 20:29

Ответ: FAQ по B3D
 
да нет jimon, ты не прав... вернее логически-то ты прав, но только средствами блица так не прокатит... там надо немного иначе обрабатывать.

Diplomat 15.01.2008 20:57

Ответ: FAQ по B3D
 
2avel: Средствами Блица так прокатит замечательно.
Хоть бы так, к примеру:
Код:

IF KEYDOWN(17)=1 THEN

 IF AnimFlag=0 THEN
 AnimFlag=1
 Animate Object
 ;...etc...
 ENDIF

ELSE

 IF AnimFlag=1 THEN
 AnimFlag=0
 Animate Object,0
 ;...etc...
 ENDIF
 
ENDIF


avel 15.01.2008 22:59

Ответ: FAQ по B3D
 
Diplomat ладно, признаю. прокатит.
я просто имел ввиду, что если, просто, написать внутри Animate, то толку не будет... Все равно надо вводить переменную-флаг. а jimon этого не указал. Думаешь до новичков дойдет, что там надо ее написать? я думаю, что нет. именно это я и имел ввиду. а то, что это можно реализовать я и сам знаю. и давно уже указал как... просто, некоторые плохо читают темы...
да и все-равно этот вариант как-то через Ж... слишком много условий...
ИМХО мой вариант проще... хотя бы не надо лишней переменной...
для множества моделей в твоем случае прийдется массив задавать для одних только флагов... хотя, конечно, это кому как удобнее. посему я и указал, что вариантов много...
вот, решил все же продублировать...
Цитата:

вопрос: при использовании команды Animate объект начинает двигаться ни тогда, когда нажата клавиша, а когда она отпускается. почему?
ответ: когда ты пишешь в главном цикле if KeyDown(...) Animate ... блиц запускает эту команду постоянно, когда ты нажимаешь клавишу, а надо ее запустить один раз. решение: используй KeyHit()(это мой вариант), либо введи переменну-флаг(это то, что предложил ты). примерно так:

If speed#=0 Then Animate меш,0
If KeyHit(17)=True Or KeyHit(31)=True Then Animate меш,1
вообще принцип везде один...

Diplomat 16.01.2008 01:28

Ответ: FAQ по B3D
 
Такое количество ветвлений необходимо. Более того, логичным решением в сколь-нибудь более серьезной ситуации было бы вынести модуль анимаций в отдельную функцию. Но в условном случае данного простейшего примера это было бы все таки не вполне целесообразно.
А насчет твоего решения... Если представить ситуацию, когда обьект должен иметь несколько различных анимационных последовательностей и не замирать намертво при остановках, а проявлять признаки жизнедеятельности, то оно теряет свою прелесть. А так- для примера конечно может жить. )

avel 16.01.2008 01:49

Ответ: FAQ по B3D
 
Diplomat да я этим примером и не претендую на что-то серьезное... это простейший случай, тупо для разъяснения общего принципа. понятно, что для чего-то серьезного надо писать систему управления анимацией. а вот насчет нескольких анимационных последовательностей, я с тобой не соглашусь, ибо при очень незначительной модификации все отлично работает. собственно, твой вариант, в том виде, как оно есть сейчас, тоже расчитан на одну анимацию. оно и понятно, ведь у тебя, как и у меня это лишь пример, для новичков, в котором убрано все лишнее для большей читабельности и понятливости. думаю, что оба варианта вполне жизнеспособны! главное, чтобы у того, кто их пользует руки были прямые... :)

tormoz 16.01.2008 02:04

Ответ: FAQ по B3D
 
в маленькой аркадке функция управления анимацией занимает 230 строк.
Там сам черт ногу сломит.
:)))

Нужно пользоваться переменными . тогда все просто

Код:

he\a_seq=AnimSeq (he\en)

управление:
If sit_key Or he\pickup

    If up_key Or down_key
        he\mode=1:he\speed=max*1.25:he\seq=roll:he\tran=10
    Else
        If  (he\seq<>roll)Or(he\seq=roll And AnimTime(he\en)>=13)
          he\mode=1:he\speed=.5:he\seq=sit:he\tran=10   
        EndIf 
    EndIf
   
     
Else
    If  (he\seq<>roll)Or(he\seq=roll And AnimTime(he\en)>=13)
    If up_key  Or down_key
        he\mode=1:he\speed=max*1.25:he\seq=run_up:he\tran=10
    EndIf
    EndIf
EndIf
.....

анимация:

If he\seq<>he\a_seq
  Animate he\en,he\mode,he\speed,he\seq,he\tran
EndIf 

какая то пост-обработка:

If he\seq=jump
    If AnimTime# (he\en)>=19
      he\mode=2:he\speed=.15:he\seq=jump_as:he\tran=20
  EndIf
EndIf
If he\seq=jump2
    If AnimTime# (he\en)>=13
      he\mode=2:he\speed=.15:he\seq=jump_as:he\tran=20
  EndIf
EndIf

весь код для примеры вырван из реального проекта. конечно это малые кусочки большой функции.
Главное - понять принцип
Он удобен

Crayzi 16.01.2008 12:16

Re: FAQ по B3D
 
Вопрос: Как пользоватся командами - "таймер1 = CreateTimer("длительность"), WaitTimer("таймер1") , FreeTimer("таймер1") ".
Сколько не эксперементировал, нечего путнего не вышло...

moka 16.01.2008 12:19

Ответ: FAQ по B3D
 
Crayzi, в справке блица, есть примеры для работы с этими функциями.

H@NON 16.01.2008 13:30

Ответ: FAQ по B3D
 
попробуй создай таймер Createtimer(200) и помести команду Waittimer() в цикл перед Renderworld(), сразу поймешь как это работает, а значит и научишься как ими пользоваться. В общем говоря, это таймер который затормаживает работы программы на установленное время ( в миллисекундах ).

HolyDel 16.01.2008 13:33

Ответ: FAQ по B3D
 
хм. имхо одна из бесполезнейших команд.
Delay(200) сделает то же самое. или, имеется ввиду на 200мс с последнего вызова?

Diplomat 16.01.2008 14:29

Ответ: FAQ по B3D
 
Нет, сравнивать таймер с задержкой- нельзя.
Таймер- есть самый простой, наиболее стабильный и наименее затратный по ресурсам из существующих ныне способов стабилизации ФПС в Блице. Можно сказать, что он является одним из лучших способов синхронизации.
Копий на этот счёт сломано немало, но факт остаётся фактом: для маленькой игры таймер предпочтительней любых других методов синхронизации.
Delay методом синхронизации очевидно не является.

Createtimer(200) создавать не стОит. Диапазон оптимальных значений для таймера- 30-40. В крайнем случае- 25-60. Кроме того, для придания эксперименту чистоты логично выключить вертикальную синхронизацию.

HolyDel 16.01.2008 14:35

Ответ: FAQ по B3D
 
Цитата:

или, имеется ввиду на 200мс с последнего вызова?
получается таймер эквивалентен:

while a_time+30>millisecs()
wend
a_time=millisecs()

?

Diplomat 16.01.2008 15:12

Ответ: FAQ по B3D
 
Ну, почти. Во-первых, таймеру указывается желаемый ФПС, а не желаемая задержка; во-вторых, таймер просто останавливает выполнение программы, уменьшая ФПС до нормы, а не глушит систему намертво пустым циклом для этих же целей; и в-третьих... гм.. в нем меньше букафф. ))

Raiter 16.01.2008 15:27

Ответ: FAQ по B3D
 
Да. Таймер полезная функция. У себя в игрушке (небольшая аркада) я им и пользуюсь. Ограничиваю FPS до 60.

moka 16.01.2008 15:43

Ответ: FAQ по B3D
 
Вот поэтому, лучше именно другая синхронизация, где разделение на логику и рендер. Тогда не страдают оба, а только один.

HolyDel 16.01.2008 16:52

Ответ: FAQ по B3D
 
такое разделение хорошо только для проектов с быстрой логикой и медленным рендером.
т.е. почти для всех блицовых.

Diplomat 16.01.2008 17:02

Ответ: FAQ по B3D
 
Чтобы логика не подтормаживала из-за тормозов рендера, ничто не мешает прикрутить помимо таймера еще и фреймскип. Только это не нужно, ибо плавное замедление игры до поры не заметно, а вот слайдшоу- заметно сразу. )
Ну а уж если тормозят и рендер, и логика- тут уж никакая синхронизация не спасет.
Так что фантастика это всё.
Единственный недостаток таймера- ограничение ФПС, которые никогда не поднимутся выше планки. Но с ресурсоёмкостью блицевских проектов, глючным моушн-твинингом и классически недопрофессиональным качеством наработок- сей мелкий недостаток останется незамеченным 90% игроков.
В общем, таймерный холивар- фарева! )

avel 17.01.2008 23:14

Ответ: FAQ по B3D
 
не знаю, кто как, а я таймер практически не использую. по его прямому назначению его использовать проблемматично и неудобно, лучше millisecs юзать, а для прочих нужд тоже есть другие способы. тот же дельтатайминг, например.

Diplomat 17.01.2008 23:35

Ответ: FAQ по B3D
 
Чем использование таймера проблематично?
Ты уже изобрел безгючный дельтатайминг на Блице?
...
В общем, спорить о том, что топор лучше чашки- я не буду. Но прежде, чем возжигать весьма-весьма древний холивар, ты бы изучил вопрос детально... Ничто не идеально, но что-то еще менее идеально, чем всё остальное.

avel 18.01.2008 05:35

Ответ: FAQ по B3D
 
ну, дельтатайминг у меня относительно безглючный. а насчет детального изучения вопроса, так с этим все впорядке. давно уже изучил. :)

NovICE 21.01.2008 08:54

Re: Ответ: FAQ по B3D
 
спасибо jimon за совет. а то в FAQ так и не нашла нормального варианта решения моего вопроса.

jimon 21.01.2008 12:36

Ответ: FAQ по B3D
 
NovICE
всегда пожалуйста :)

impersonalis 01.02.2008 17:44

Ответ: FAQ по B3D
 
Не все знают - если 3ий аргумент ф-ции MID задать как "-1" - то будет взята вся строка:
Код:

Print Mid("1234567890",2,-1)
результат - 234567890

HolyDel 01.02.2008 18:01

Ответ: FAQ по B3D
 
кстати, можно также указывать запредельное значение.
например:
Цитата:

Print Mid("1234567890",2,255)
но -1 мне нравится больше. буду юзать. спасибо!

alcoSHoLiK 01.02.2008 18:16

Ответ: FAQ по B3D
 
Видимо, последний аргумент рассматривается как беззнаковое целое. Вэтом случае -1 и 255 для компилятора - одно и то же значение.

Crayzi 10.10.2008 18:24

Re: FAQ по B3D
 
Вопрос 1: Есть ли возможность перематывать звук запущенный командой PlaySound или PlayMusic? Если да, то как это сделать?
Вопрос 2: Как работать с массивами, и можно ли их сохранять в файл(допустим месторасположение ботов, игроков, количество НР ботов... или для хранения таких данных лучше использовать другой способ?), желательно хотябы простенький пример, для наглядности.

tormoz 10.10.2008 23:30

Ответ: FAQ по B3D
 
1 нет. для такого используй сторонние звуковые либы
2 естестно. см группу команд файл

impersonalis 11.10.2008 00:10

Ответ: FAQ по B3D
 
http://forum.boolean.name/showthread.php?t=1014

Colossus 17.11.2008 14:32

Ответ: FAQ по B3D
 
Люди, тока не ругайтесь, задам самый тупой вопрос))) как привязать конус к кубу?!

пробывал вот так
Код:

EntityParent Cone(конус),Cube(мой кубик-плеер)
и нихрена не выходит

HolyDel 17.11.2008 15:33

Ответ: FAQ по B3D
 
EntityParent Cone(конус),Cube(мой кубик-плеер)

все правильно.

Main Cry 14.12.2008 11:10

Include "_"+Str(0)+".bb";пример
 
Возможен ли импорт "*.bb"-модуля со сконкатенированным наименованием?

snikers 14.12.2008 13:05

Ответ: Include "_"+Str(0)+".bb";пример
 
Цитата:

Сообщение от Main Cry (Сообщение 92130)
Возможен ли импорт "*.bb"-модуля со сконкатенированным наименованием?

что мешает проверить? =)

Main Cry 15.12.2008 00:58

Арехаф стало еще больше...
 
Цитата:

Сообщение от snikers (орехов стало дох*я) (Сообщение 92133)
что мешает проверить? =)

с ЧЕГО ты взял, что я не проверял? =)

нет, файло "*.bb" так не линкуется.(
Палюбому.(

zex911 09.01.2009 19:01

Ответ: FAQ по B3D
 
Подскажите кто-нибудь! Только начал изучать Blitz3D, и застопорился.. Прочитал в учебниках про вызов 2D анимации командами LoadAnimImage и DrawImage.
Вот такая проблема:
Анимационные файлы формата gif данными командами не поддерживаются. В примерах (help rus,) показан вызов файла bmp и говорится, что это анимационный файл с кадрами. Насколько я знаю, BMP - это файл только с одним кадром. В общем, у меня простая задумка - создать небольшую 2D анимацию в виде идущего человечка (героя), но как это сделать с помощью LoadAnimImage и DrawImage не знаю. :(

impersonalis 09.01.2009 19:27

Ответ: FAQ по B3D
 
ты смотрел, как выглядит семпл из примера? Это стрип - кадры склеенные в одно изображение. Разрез растра на кадры просиходит на основе их размера, переданного в функцию загрузки.
Для gif надо использовать команды категории DirectShow, но там есть некторый гемор - нет тайминга как у видео-файла, а потому необходимо самому сделать систему удержания кадра и его смены с заданной частотой (рекомендуется 10Гц).

zex911 09.01.2009 19:58

Ответ: FAQ по B3D
 
impersonalis
Моя беда в том, что я не смог посмотреть семпл так как директории C:Program Files\Blitz\Basic\samples\graphics у меня в блице нету. Только что до меня наконец дошло - кадры там должны разбиватся самим блицом. Огромное спасибо за быстрый ответ.

Артем Валерьевич 19.01.2011 23:23

Ответ: FAQ по B3D
 
помогите сделать такой редактор. http://www.youtube.com/watch?v=VfJca...yer_detailpage


и вопрос в догонку, я примерно понимаю как это сделано. Но вот как узнать в какой ячейке маркер?


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

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