forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Лабиринт с шариком внутри ( проблемка) (http://forum.boolean.name/showthread.php?t=7411)

klopmaks 04.12.2008 19:49

Лабиринт с шариком внутри ( проблемка)
 
Вобщем есть лабиринт с шаром внутри , его можно крутить ( лабиринт )
Шар под действием гравитации падает вниз , таким образом нужно проводить шар от старта к финишу.
Проблема: я прописал коллизии , но иногда ( часто) шар проваливаеться сквозь лабиринт , помогите понять в чем проблема.
Это просто моя МАН работа!
Мне ее нужно зделать обязательно !!!!
ПОМОгИТЕ РАЗОБРАТЬСЯ :4to:

IGR 04.12.2008 21:37

Ответ: Лабиринт с шариком внутри ( проблемка)
 
как он проваливается ?? в дыру в лабиринте ?? :)
нада код !! там возможно проблемы с колизийным радиусом шарика !! какой тип колизи поставил ??

ABTOMAT 05.12.2008 00:10

Ответ: Лабиринт с шариком внутри ( проблемка)
 
PhysX туда подключай и всё будет пучком :lol:

klopmaks 05.12.2008 14:04

Re: Лабиринт с шариком внутри ( проблемка)
 
2 АВТОМАТ: Можешь кинуть линк , на физикс , и какую нибудь простенькую инструкцию =) , мне ничего особенно сложного ненадо , просто чтоб шарик падал и не проваливался сквозь стенки.
2 АЛЛ: кодеГ


Graphics3D 640,480
SetBuffer BackBuffer()

camera=CreateCamera()
PositionEntity camera,0,0,-50
tex=LoadTexture("road1.bmp")

Global LABT=2
Global BALLT=1

;light=CreateLight()
;RotateEntity light,90,0,0

cube=LoadMesh("lab1.3ds")
ScaleEntity cube,0.1,0.1,0.12
RotateEntity cube,90,180,0
PositionEntity cube,0,0,0
EntityTexture cube,tex
EntityType cube,LABT
Pivot=CreatePivot()
EntityParent cube,Pivot
EntityRadius cube,1

ball=CreateSphere()
ScaleEntity ball,1.5,1.5,1.5
PositionEntity ball,0,2,-5
EntityType ball,BALLT
EntityRadius ball,1.5



;PointEntity camera,cube

Collisions BALLT,LABT,2,2
Collisions LABT,BALLT,2,2

While Not KeyDown( 1 )

TranslateEntity ball,0,-0.1,0
If KeyDown(16) Then TurnEntity Pivot,0,0,1
If KeyDown(25) Then TurnEntity Pivot,0,0,-1


UpdateWorld()
RenderWorld
Flip
Wend

End

:4to:

Антихрист 05.12.2008 14:31

Ответ: Лабиринт с шариком внутри ( проблемка)
 
так lab1.3ds нужен.

newman 05.12.2008 15:17

Ответ: Лабиринт с шариком внутри ( проблемка)
 
klopmaks, если выкладываешь код где грузишь свои модели и тексутры то выкладывай папку с медией. Так что медию в студию :)

klopmaks 05.12.2008 18:56

Re: Лабиринт с шариком внутри ( проблемка)
 
http://www.humyo.com/F/2692983-273767763

Ичигорь 05.12.2008 19:53

Ответ: Лабиринт с шариком внутри ( проблемка)
 
Links on PhysX

klopmaks 05.12.2008 21:02

Re: Лабиринт с шариком внутри ( проблемка)
 
Это не прямая ссылка , и помоему его там скачать невозможно , т.к. ( он платный )
тоисть нужен кей...
Плюс мне бы какойнибуть урок простенький , по использованию.
Можнно чтото и проще чем ФизИкс . Просто не хочу потерять такой прикольный проЫкт =)

З.Ы. Я кинул линк на лаб1.здс - гляньте =))

ABTOMAT 05.12.2008 21:54

Ответ: Лабиринт с шариком внутри ( проблемка)
 
Блин да я пошутил! Этот лабиринт можно и на коллизиях сделать... А если раскинуть мозгами, то и без них даже... (при условии что все дорожки в лабиринте под углом 90° то алгороитм придумать несложно)

klopmaks 06.12.2008 15:33

Re: Лабиринт с шариком внутри ( проблемка)
 
Можете глянуть плз код , я не вижу ошибки , или чегото такого.
Помогите пожайлуста разобраться :(

FrankH 06.12.2008 19:59

Ответ: Лабиринт с шариком внутри ( проблемка)
 
В коде несколько ошибок, но не из-за них не работает. Коллизии блитца не позволяют таким образом воздействовать стенками лабиринта на шарик, чтобы он поворачивался вместе с лабиринтом, это была бы IK. Ты можешь двигать шарик и все будет работать пока лабиринт стоит на месте. Самый простой вариант, мне кажется(с), двигать камеру, свет и вектор притяжения шара вместе, оставив неподвижным лабиринт. Т.е. сделать иллюзию что вращаешь головоломку а на самом деле вращаешь Землю, Солнце и игрока.

klopmaks 06.12.2008 20:51

Re: Лабиринт с шариком внутри ( проблемка)
 
FrankH ,спасибо тебе ;)
Я туту подумал , можно создать некий куб вытянутый . как палку , на его конце шар и этот куб крутить вместе с камерой так чтобы шар описывал круг вокруг лабиринта когда крутиться куб ( куб и шар зделать парентами , ну наверно ). И поинтить шар на шар-привязку и двигать с какимто кооефициентом Гравитации =)
Вот и все...
Вот токо как привязать , шар-пивот к палке-оси , перенты подойдут? :rolleyes:

FrankH 06.12.2008 21:03

Ответ: Лабиринт с шариком внутри ( проблемка)
 
Код:

Graphics3D 640,480
SetBuffer BackBuffer()

camera=CreateCamera()
PositionEntity camera,0,0,-54
tex=LoadTexture("shot00009.jpg")

Global LABT=2
Global BALLT=1

light=CreateLight()
RotateEntity light,90,20,0

cube=LoadMesh("lab1.3ds")
ScaleEntity cube,0.1,0.04,0.12
RotateEntity cube,90,180,0
PositionEntity cube,0,0,0
EntityTexture cube,tex
EntityType cube,LABT
Pivot=CreatePivot()
TPivot=CreateCube()
PositionEntity TPivot,0,-1000000,0

EntityParent TPivot,Pivot
EntityParent light,Pivot
EntityParent camera,Pivot


ball=CreateSphere()
PositionEntity ball,0,-2,-5
EntityType ball,BALLT
EntityRadius ball,1

PointEntity camera,cube


Collisions BALLT,LABT,2,2


While Not KeyDown( 1 )


If KeyDown(16) Then TurnEntity Pivot,0,0,1
If KeyDown(25) Then TurnEntity Pivot,0,0,-1
PointEntity ball,TPivot
MoveEntity ball,0,0,.3
UpdateWorld()
RenderWorld
Flip
Wend

End

через Ж, за то просто и огрехов в лабиринте не видно.

klopmaks 07.12.2008 01:27

Re: Лабиринт с шариком внутри ( проблемка)
 
Огромное тебе человеческое спасибо.... ;)
Я бы наверно через неделю догадался бы все зделать парентами , чтобы "гравитационный куб" крутился вместе с лабиринтом и светом :wild:

klopmaks 08.12.2008 00:30

Re: Лабиринт с шариком внутри ( проблемка)
 
Эммм , после компиляции родными средствами блица, ну встроенным компилятором... и отправки на другой комп мне выдало Unable to set graphics mode
, а на еще другом компе тоже самое .
А типерь вниманийе фапрос!
Откуда оно береться и чем нужно компилировать чтоб от этой бяки избавиться , мне ее потом в школу нести на флешке ;)

З.Ы. Не думайте что это готовая версия которую я отнесу в школу , я еще введу кучу всего интересного. Я просто говорю в общем смысле , что после всех доработок я отнесу игру к коммисии МАН работ :ok:

FrankH 08.12.2008 00:54

Ответ: Лабиринт с шариком внутри ( проблемка)
 
Unable to set graphics mode - невозможно установить графический режим, например разрешение, разрядность или оконный режим. Никто за тебя учить язык не будет.

ABTOMAT 08.12.2008 02:33

Ответ: Лабиринт с шариком внутри ( проблемка)
 
Вложений: 1
FrankH,
Цитата:

Ты можешь двигать шарик и все будет работать пока лабиринт стоит на месте. Самый простой вариант, мне кажется(с), двигать камеру, свет и вектор притяжения шара вместе, оставив неподвижным лабиринт. Т.е. сделать иллюзию что вращаешь головоломку а на самом деле вращаешь Землю, Солнце и игрока.
тут ты не прав. В аттаче смотри убедительное доказательство, крутится именно сам лабиринт, а не камера и вектор, даже на убогой коллизии блитца. (кстати ещё и ускорение свободного падения привинтил)

З.Ы.
блятцовые коллизии - та ещё жопа, их надо избегать всеми возможными способами...

всегда надо либо математикой делать, либо физ.двигом
в данном случае явно математикой лучше всего и быстрее коллизий и не надо многомегабайтовые либы подключать
только с математикой в данном случае возиться долго... с другой стороны если это лаба в школу то если сделаешь алгебраическим методом, то (to klopmaks) сможешь долго рассказывать на уроке умные вещи о том как ты организовал движение шарика, все будут смотреть и думать "ни фига се, моск!" , так что тут уж сам решай что важнее - быстрота написания или умный вид при демонстрации

klopmaks,
Цитата:

Эммм , после компиляции родными средствами блица, ну встроенным компилятором... и отправки на другой комп мне выдало Unable to set graphics mode
, а на еще другом компе тоже самое .
А типерь вниманийе фапрос!
Откуда оно береться и чем нужно компилировать чтоб от этой бяки избавиться , мне ее потом в школу нести на флешке
Блин, чел, у тебя проблема на ровном месте! Ладно если бы новичёк был, а ты уже сколько времени блиц юзаешь и всё...[слово было заменено на более приличное] не учишься. Конкретно по вопросу, поставленному в посте №16. Чтобы завтра хелп по этим командам:
  • Graphics3D
  • CountGFXModes
  • GfxModeWidth
  • GfxModeHeight
  • GfxModeDepth
Был скурен от первого до последнего листа. Юзай мой семпл (пока я добрый :-D)
Пользуясь терминологией тов. Михеева, ГАФ!

FrankH 08.12.2008 05:01

Ответ: Лабиринт с шариком внутри ( проблемка)
 
Цитата:

тут ты не прав
Да, не прав, два апдейта не использовал никогда. :)

ABTOMAT 08.12.2008 13:44

Ответ: Лабиринт с шариком внутри ( проблемка)
 
По-хорошему надо упдейтать конкретно 1 только шар. Но блин, так устроен блитз, что обновить можно либо всё, либо ничего (как вариант - группами).

klopmaks 08.12.2008 20:08

Re: Лабиринт с шариком внутри ( проблемка)
 
2 frankH Первое место на районной олимпиаде по английскому йазыку среди 8-ЫХ класов г.Киева ;)
G# = -9.8*0.000002 ; По закону тов. Ньютона... Давно? откуда 0.2 взялось?

Else
VY = VY + G*dt
End If
Модешь обьяснить плз этот кусок и зачем нужен dt?

2 АВТОМАТ
ща попробуем фкурить =,,

ABTOMAT 08.12.2008 20:29

Ответ: Лабиринт с шариком внутри ( проблемка)
 
0.2 - аналог массы
dt - синхронизация

FrankH 08.12.2008 22:12

Ответ: Re: Лабиринт с шариком внутри ( проблемка)
 
Цитата:

Сообщение от klopmaks (Сообщение 91868)
по английскому йазыку

я имел ввиду оба языка, но больше блитц, т.к.ты тут не первый день..
Старая аватарка мне больше нравилась)

moka 09.12.2008 15:13

Ответ: Лабиринт с шариком внутри ( проблемка)
 
Не чётко прочёл всю тему, наверное уже говорили..
Коллизия в блице весьма странно устроена, прдположим такую ситуацию: есть объект динамичный (тот же шарик), и есть статичный уровень. Если между двумя тактами, перемещение шарика будет с одной стороны сразу на другую сторону фуйса лабиринта, то в проверке коллизии, как я понимаю будет проверка на весь путь, так сказать будет столько шагов проверки, сколько длина всего "пути / (примерно радиус сферы для фруструма)", таким образом объект не сможет проскочить, т.к. в одном из проходов наткнётся на стенку. Теория может быть ошибочна, но на практике всё упирается именно в подобное.
Далее, если уровень станет динамичным, а кручение не есть перемещение, то в один из тактов позиция одного из предпологаемых трианглов, с которым должно было произойти столкновение, проскочит тот кусочек, что даст возможность в один шаг объекту уже стать на другой стороне фейса. Но тут возникает моммент, к примеру если есть проходы, то по идее изменение окружения тоже должно быть по проходам, и теперь представим что всё будет вот так по проходам проверятся - комп умрёт. Поэтому эта теория, учитывая данный факт, весьма шатка и не убедительна.
Короче говоря, в моммент между двумя проходами проверки на коллизию, фейс крутящегося объекта проскочил. Кстати в PhysX и любом другом физическом движке будет также. Но в PhysX есть CCD (Continuous Collision Detection), эта функция включает какраз вот эту проходную проверку, при этом регулировать шаг тоже можно, но тут возникает моммент какраз который Очень сильно затормозит просчёт. Для одного шарика - думаю будет не сильно и тормозно, но не переусердствуйте с параметром проходности (если всёже юзать PhysX и эту функцию).
Варианты решения проблеммы:
- Увеличение размера коллизии шарика (не обязательно, но соответственно и визуальный шарик придётся увеличить)
- Ограничение скорости перемещения шарика. Скорость не должна превышать радиуса шарика, между двумя просчётами коллизии, с учётом встречной скорости перемещения трианглов лабиринта.
- Исползование CCD функционала в PhysX.
- Фиксировать по времени частость вызова функции просчёта физики.

Можно и совместить все 3 предложенных варрианта, а можно использовать один из них, но второй будет обязательным, но без третьего или жёсткого выполнения второго предложения, проскок всёравно реален. Четвёртый пункт обязателен без каких либо вопросов.

klopmaks 09.12.2008 15:48

Re: Лабиринт с шариком внутри ( проблемка)
 
FrankH, мне тоже иногда спать хочеться , кстати я чет давно ФМА не смотрел =)))
MoKa, спасибо =) . А физикс тяжело подключить???? =) И где его вобще взять? Можнтн подкинуть какую нибуть инструкцию.

HolyDel 09.12.2008 16:04

Ответ: Лабиринт с шариком внутри ( проблемка)
 
MoKa, на самом деле шаг один. Просто проверяется коллизия не шара в текущем месте, а отрезка. из начальной точки в конечную.

klopmaks, www.rubux.net

moka 09.12.2008 17:56

Ответ: Лабиринт с шариком внутри ( проблемка)
 
HolyDel, могу поспорить, т.к. ведь если на пути отрезка который будет из центра, не будет проходить трианглы, а будут только где-то объект задевать, то и позиция изменится, или проверка лучами происходит из каждой вершины, но опять же будут глюки, с острыми или маленькими объектами. Не соглашусь насчёт отрезка, и откуда такая информация?

HolyDel 09.12.2008 17:59

Ответ: Лабиринт с шариком внутри ( проблемка)
 
отрезок толстый. даже не отрезок а капсула.
откуда? ну.. чисто аналитически получается так.
потомучто хоть ты объект здинеш на 1, хоть на 1000, время обработки будет одинаковым. Значит никак не циклом с мелкими шагами. По крайней мере стандартная блицовая коллизия.

moka 10.12.2008 11:42

Ответ: Лабиринт с шариком внутри ( проблемка)
 
Хм, это с элипсоидом, а с кубом?
Эх..

Billy 11.12.2008 04:36

Re: Лабиринт с шариком внутри ( проблемка)
 
Коллизию в блице не раз проклинал поначалу, тоже уже начал прикручивать ньютон, пока не понял, что туплю сам.
Коллизия бывало не обсчитывалась и ентитя порваливалась. Особенно заметно если треугольники в мешах ландшафта больших размеров и угол перехода крутой, те резковато вверх поднимается гора к примеру. Но проблема в том , что надо задавать второй радиус ентите и все начинает работать нормально. К коллизии блитца никаких претензий.
EntityRadius ball,1,2 к примеру (второй радиус подбирайте, чем больше размер треугольников тем больше радиус). Можно передвигать ентитю и на большое расстояние чем ее радиус, блитц все рассчитает нормально. Так что проблема не в блитце ...
А в данном случае FrankH правильно описал главную проблему. Да и лабиринт все таки я бы поаккуратнее сделал. Ни к чему там эти нестыковки между стенками. Пользуйся Snaps Toggle в максе и тогда не надо будет такой лабиринт из такого количества кусочков собирать. Вы поэтому, я так понял, и маштаб лабиринта уменьшили, что проваливалась сфера ? Просто у Вас 3 дыры размером около 3 юнитов, что позволяет проваливаться сфере радиусом 1.


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

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