![]() |
Гусеница
У меня тут вопрос назрел! Хочу сделать гусеницу. Я ее даже сделал, но есть одно НО...она появляется из начальной точки, а хотелось бы что бы при старте программы, все элементы уже были на ходу. (то есть что бы она сразу появилась, а не постепенно, как в коде)
Код:
Graphics3D 640,480,16,2 |
Re: Гусеница
Если есть еще какой-нить будь примерно похожий на мой способ реализовать так гусеницу я только за)
Неужели никто не знает как это сделать? |
Re: Гусеница
Я пробовал сделать. По идее, это вполне возможно, но немного трудно в голове эту гусень представить =) а более того - реализовать. В Блице с key-ами туговато, не то что в nebula... Может можно как-то по-другому решить эту проблему - через готовые анимации или еще... что именно в результате требуется? Это будет игра и хочется невероятной продуктивности, или?
|
Re: Гусеница
Полуофф:
Не восприми как навязывание мнения, но создание гусеницы [в смысле танковых траков?] из отдельных мешей- это неоптимальное решение в условно-стандартной ситуации. Иначе говоря, если вышеприведенный алгоритм с кубиками не является стилистически или техниески необходимым решением, то движущаяся гусеница с намного более высокой производительностью и, вероятно, реалистичностью, создается путем применения анимированной посредством PositionTexture текстуры траков на модели гусениц. А повторение гусеницей формы рельефа осуществляется путём управления сегментами гусеницы с помощью костей. |
Re: Гусеница
не понял я смысла слова "продуктивности"
Я знаю как НУЖНО делать гусеницу (подсказывали мне) но я хочу сденлать именно кубиками, которые крутятся вокруг оси! Посмотрю как-нить пример "небула" ?) У кого-нить еще есть варианты по этому поводу? |
Re: Гусеница
Цитата:
У вас случайно нет идеи как там можно....извратнуться? |
Re: Гусеница
Насчет nebula - не буду писать весь пример, потому как c exe-шником нужно париться, на это я столько времени не найду, а вот кратко, как в nebula это делается, могу сказать - это выглядит примерно так:
set start_time [/sys/servers/channel.getchannel1f "time"] new n3dnode gus1 sel gus1 new nipol move sel move .setreptype "loop" .connect txyz .addkey3f 0 0 0 0 .addkey3f $start_time 0 0 0 .addkey3f [expr $start_time+0.5] 10 0 0 и т.д., т.е. создать необходимый список ключей с координатами sel .. sel .. Я уже на nebula около 1Мб кода написал - в аркадных проектах (и в этом случае) - это отличное решение. Проблема в том, что нужно еще экзешник создавать, делать возможным использование D3D и OpenGL - хотя, разве это проблема ? - это в кое-каком роде расширенные возможности. |
Re: Гусеница
да у меня исходник небулы есть, но думаю, что это неоправданно сложный вариант реализации
|
Re: Гусеница
Мне кажется, не сложнее чем в Blitz'е. Просто в nebula нужно сначала понастраивать кучу прог и т.д. - от С-студии до удобного текстового редактора. Зато потом как все легко идет! Можно в С-коде создать класс nGusenicanode, который будет иметь одинаковый свойства или через linknode - мне, например, это кажется проще, хотя, наверное, одновременно умертвляю образ "проще Блица не бывает нигде", к которому все привыкли :-)
|
Re: Гусеница
Вообщем говоря более понятным языком. Как мне реализовать ЭТУ гусеницу?
|
Re: Гусеница
Да, над этой задачей нужно посидеть, логически подумать. В цикле проигрывать уже не нужно - это раз. Задержку можно перед циклом поставить, подождать, чтобы немного проиграло :) , или что-то типа этого, только оптимизировать:
Код:
|
Re: Гусеница
хотите извращаться, пожалуйста. мну ничего лутчего чем придумал г-н Diplomat неизвестно. вот ваш пример:
Код:
Graphics3D 640,480,16,2 Код:
For i=1 To 500 |
Re: Гусеница
2Vyacheslav ваш вариант интересный, хотя придется для каждого куба прописывать...
2HolyDel Так тоже можно сделать НО Есть две проблемки. Причем одна проблемка маленькая, а другая большая. Первое - это как остановить эту анимацию, а потом продолжить желателно с того же места А второе, что по моему мнению не реально сделать, так это сместить кубики. Ведь что делать если юзер захочет "поехать", то получается нужно смещать эту гусеницу, а тут она стоит на месте и не двигается ( |
Re: Гусеница
2HolyDel: Интресеный вариант! Я только до обычной delay на тот момент додумался :) .
2Fant: Нужно определиться с тем, что нужно, а что будет лишним, потому как таким образом не получиться добавить ей управления и анимацию довольно сложно остановить, потому как придется дописывать новые кадры или прописывать анимацию заново. Немного поприкалывались с Блица, а теперь давайте попробуем сделать, кто функциональнее, а? Т.е. Fant напишите тех. задание, что нужно: ирушку типа гусеницы, какое управление и т.д.(?) И давайте померяемся силами - у кого она наиболее будет хорошо работать с наименьшим количеством строк кода, как? :super: |
Re: Гусеница
2 Vyacheslav :
Дальнейший флуд, являющийся по совместительству оффтопом- будет удаляться. Если Вас интересует популяризация иных средств разработки- ставьте вопрос о создании соответствующего раздела перед администрацией. Для доказательства своих тезисов о превосходстве по производительности и удобству, создавайте в Болтовне или Форумных Конкурсах соответствующую тему с содержанием вроде следующего: "Вот мой тест производительности движка [встваить нужное название], использующего синтаксис языка программирования [встваить нужное название]. Всего N строк. На моей машине [подставить данные аппарата] выдает I FPS. Тест делает [описать работу] и использует [прикрепить к теме используемые ресурсы, ЕХЕ и исходники]. Пожалуйста, протестите у себя и, если возможно, постройте на используемом вами движке, в частности на Blitz3D, аналогичный тест для сравнения производительности. Спасибо!" А флудить- нинада. ;) |
Re: Гусеница
2Vyacheslav - вообщем будет объект. Танк. Он будет ездить. Он будет не ездить. То есть нужно анимировать гусеницу когда танк в пути и когда он стоит на месте. Получается что гусеница должа быть как-то привязана танку. вот!
К сожалению я бы померялся силами, но мои идеи насчет этого бессильны...как я уже только не пытался сделать!!!(( 2Diplomat - мощно задвинул. Внушает! |
Re: Гусеница
а почему бо не сдлать анимированную текстуру на гусеицы танка
гдето видел найду скину |
Re: Гусеница
2Horror я хочу именно так. Про анимированную текстуру слышал. Это самый лучший вариант.
|
Re: Гусеница
теорема:
анимированная текстура - не самый лучший. доказательство: каждый кадр анимированной тексы надо хранить где?, правильно, в идеопамяти размеры которой небольшие по сравнению с размером оперативной памяти. поетому лучший вариант - описанный г-ном Diplomat`ом. |
Re: Гусеница
2HolyDel: я не ищу луший вариант. Я пытаюсь реализовать мой.
|
Re: Гусеница
Как единственный аналогичный требуемому решению и вариант могу посоветовать анимировать траки в Мах-е, а потом в Блице "нарезать" анимацию покадрово ЁкстрактАнимСек-ом и понаходить каждый трак в качестве чайлда.
|
Re: Гусеница
Цитата:
Текстурка анимируется программно путём сдвига её по 1ой координате (скролл текстуры) - это очень даже сверх экономно - поверь мне. Причём в случае гусеницы нужна текстурка одного звена, т.е. текстура тайловая и занимает в памяти столько же сколько её 32х битное представление в виде BMP -файла. |
Re: Гусеница
я не админ, но мне кажется тут начинается спор. У меня есть вопрос. Как средствами блиц сделать гусеницу. Это все. Есть ли варианты как это сделать? Подскажите пожалуйста!?
|
Re: Гусеница
2 Fant : Если анимации кубиков не подходят, и формулы, описывающие траекторию, неудовлетворяют требованиям- используй вейпоинты. Массив пивотов, траки по ним по очереди "пробегают". Циклично. По принципу [blitz]For n=0 to NTracks PointEntity Track(n),WP(i) MoveEntity Track(n),0,0,v If EntityDistance(Track(n),WP(i))<v Then i=i+1 If i>NWPoints Then I=0 Next[/blitz] Всё хозяйство припарентено к танку. Более оригинальный метод придумать трудно. :) |
Re: Гусеница
2Diplomat спасибо за совет! Ларчик просто открывался. Я ПРОСТО припэретил анимацию к танку. и все!!!
|
Re: Гусеница
Fant
ето я говорил тебе еще вчера |
Re: Гусеница
...а я еще сегодня... :"(
|
Re: Гусеница
А у меня эта идея еще позавчера возникла, но только сегодня я понял. как ее применить:''((
|
Re: Гусеница
2SBJoker: анимация текстуры и ее скролл -несколько разные вещи, имхо.
|
Re: Гусеница
2HolyDel Кстати, эту ветку еще долго можно не закрывать! Я сделал уродливый танк. Привязал гусеницу, но никак не могу сделать так что бы она не крутилась, когда танк не едет (смысле сначала она не крутится, потом танк едет - она крутится. Потом уже она крутится все время...странно.)
|
Re: Гусеница
Цитата:
Во вторых: animation сущ. 1) анимация (мультипликация) 2) воодушевление; живость; вдохновение, оживление В текущем разговоре это слово использовалось во втором значении, а именно "оживить", заставить двигаться текстуру,т.е. анимировать. А не использовать предварительно анимированую последовательность картинок. |
Re: Гусеница
2SBJoker. Ok.
2Fant если кроме танка ничего больше анимированного в сцене нету, то легче всего изменять параметр UpdateWorld. т.е. должно быть примерно так UpdateWorld(spd*f), где spd - скорость танка, а f - фактор, который подбирается экспериментально. |
Re: Гусеница
Короче фишка такая. Я не могу удалить пробелом все элементы. То есть я понимаю из-за чего ошибка, но не знаю как ее можно обойти. Пробел - удаление.
Подкажите что можно сделать? Код:
Graphics3D 640,480,16,2 |
Re: Гусеница
лучше - бы весь код в студию.
а так сильно имхо: Код:
if keydown(57) |
Re: Гусеница
2HolyDel но вообще-то код, который я выложил и есть - весь
И так не работает) посмотри в чем там ошибка! Вернее ясно в чем она, вопрос как ее избежать!? |
Re: Гусеница
Fant, а что вообще надо? просто удалить танк?
выйди за цикл и удали его. или проверяй на удаленность, если удален танк то никакие операции не должны над ним производиться. вот рабочий пример: Код:
Graphics3D 640,480,16,2 |
Re: Гусеница
2HolyDel спасибо! Теперь я понял как все удалить!
|
Re: Гусеница
Снова траблы. Я хочу гусеницу представить не через dim(массив), а через type (тип)
Вот я вынес из кода одну гусеницу, и не понимаю...не могу найти ошибку и даже понять как это сотворить? track2 - сделана через массив и работает (если закомментить все, что касается track) вот код Код:
Graphics3D 640,480,16,2 |
Re: Гусеница
Форум благополучно спит?;)
Я пытался сделать так, как нужно, но просто я не до конца понял, как это реализовать! |
Re: Гусеница
Сравни две строки:
Field obj[10] и любую из последующих, например: t\obj = CopyEntity(track(0)) "Ти всё-таки дапусирь маренький асибка!"(с) Иначе говоря, всё, что ниже камента "animated track"- неправильно. Теперь думай. ;) |
Re: Гусеница
Цитата:
|
Re: Гусеница
Сразу видно, что вначале у тебя в поле типа одномерный массив obj[10], а потом- почему-то простая переменная obj.
Естественно, такой кандибобер не будет работать. И первый цикл, кстати, делает не 10 траков для одной гусеницы, а пытается клепать 10 гусениц с одним траком каждая. Всё. Знаю, конечно, что поначалу вьехать очень трудно, но больше подсказывать не буду. Иначе трудно будет определить, понял ты, или списал. А это надо понять самому. Думай. |
Re: Гусеница
[code]
Type track Field obj[10] End Type t.track=New track For t.track=Each track t\obj[10]=CreateCube() ScaleEntity t\obj[10],.025,.025,.025 PositionEntity t\obj[10],.1*.2,0,0 Next [\code] Я так создаю 10 кубиков или 1 кубик? - оказывается что 1 А как мне через positionEntity это проверить? так i*20 Мне нужно создать 10 кубиков через тип а потом из анимировать. Я иду правильным путем? - ну та это никак не могу сообразить(((((( |
Re: Гусеница
Конечно, ты создаешь один кубик. А как иначе?
Вот смотри, если отвлечься от типов вообще, и рассматривать поля типов как простые переменные и массивы (коими они и являются), то всё становится намного проще: 1. Ты создал массив на 11 элементов: Field obj[10]. 2. Ты присвоил 10-му элементу массива хендл свежесозданного куба: t\obj[10]=CreateCube() 3. Ну и всё. Других 10 кубов ты нигде не создаешь. Т.е. цикла по элементам массива в твоем коде нет как нет. А без цикла ты не заполнишь 10 элементов массива. Ферштейн? [blitz]For n=0 to 10 t\obj[n]=CreateCube() Next[/blitz] Или грубо говоря [blitz]t\obj[0]=CreateCube() t\obj[1]=CreateCube() t\obj[2]=CreateCube() ;... t\obj[8]=CreateCube() t\obj[9]=CreateCube() t\obj[10]=CreateCube()[/blitz] Вот. Цитата:
Это не беда, я, к примеру, когда был юн и учил БЕЙСИК-МСХ, тоже не сразу понял, что такое ветвления, экспотенциальная форма числа привела меня в замешательство, массивы- в ступор (чем, чйорт подйери, они отличаются от обычных переменных?!! :)), сабрутины показались редкостно ужасным изобретением, а из всех операторов цикла я выбрал оператор безусловного перехода, который тогда именовался еще раздельно: "Go To"... :-) Так что давай, учись. |
Re: Гусеница
ТОка хотел написать! Я все сделал, кроме в скобках...[n]
Код:
Graphics3D 640,480,16,2 А теперь покажу, если сделать по-твоему. мне кажется оба варианта эквиваленты, но как же их расположить в форме прямоугольника! Вот в этом и загвоздка! Код:
Graphics3D 640,480,16,2 |
Re: Гусеница
Я со всем тут разобрался. Поэтому вопрос снимается.
|
Re: Гусеница
|
Re: Гусеница
Но у меня появился вопрос:
В цикле: Код:
If (Not KeyDown(200)) And (Not KeyDown(208)) For a=0 To 9 For t.track=Each track Разве это не одно и то же? |
Re: Гусеница
Сейчас я начну ругаться. Матом. Громко, долго и обреченно.
Снимать вопрос было явно рано, ибо ни в чём ты не разобрался и ничего не понял. Абсолютно ничего. Взгляни на такой вот кусочек своего кода "по Дипломатовскому варианту": Код:
For a=0 To 9 Она зачем-то создает 10 обьектов типа "Т" и в один из элементов массива "Обж" для каждого обьекта записывает по хендлу куба! ...яфшоке... Строку "t.track=New track" вынеси к чертовой бабушке из этого цикла, просто перетащи ёё вверх! Тогда у тебя будет всего один обьект типа, но с нормально заполненным массивом. И тогда ветвление "If t\obj1[a]<>0 Then" тебе не нужно будет. И тогда ну никак не должно тебе прийти в голову отождествлять "For t.track=Each track" и "For a=0 To 9"- потому что первое- это цикл по обьектам типа, а второе- это цикл по элементам массива, принадлежащему одному из обьектов. Кстати, не должен быть и не может быть цикл по элементам массива находиться снаружи цикла по обьектам типа, которым эти самые массивы принадлежат. Резюме: Забыть о типах нафиг, как о страшном сне. Снести Блиц, поставить КуБасик, купить к нему хороший самоучитель и учиццо основам основ! Долго и упорно... Ну, или найти на форуме советчика, менее припадошного, чем я... |
Re: Гусеница
2Дипломат: зачот! я первым понял что это бесполезно :)
|
Re: Гусеница
Цитата:
|
Часовой пояс GMT +4, время: 01:33. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot