Автор Тема: Странное поведение в BGE  (Прочитано 35448 раз)

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #135 : 25 Апрель 2018, 06:54:47 »
... да, нужно признать, что проблемы в понимании есть, причём эти проблемы с обеих сторон,  но для того форум и существует, чтобы решать эти проблемы в живом общении (надеюсь, что никто не сомневается в искренности такого общения) ...
... на вопрос почему некоторые вопросы решаются долго или не решаются вообще - отвечу что любая задача должна быть конкретная, измеряемая, достижимая, согласованная и определена во времени ...
... но в целом, например, меня устраивает перманентное будирование темы и исследовательская неопределённость результата на текущий момент, но при адекватной активности ...

Оффлайн Samovar

  • Житель
Re: Странное поведение в BGE
« Ответ #136 : 27 Апрель 2018, 10:44:54 »
Novichok, ты ж прочёл до того как наш мудрый админ удалил... неприятно, правда ? :) А прикинь, каково тем людям, которые пытались тебе помочь, и в итоге нарвались на твои непонимание и грубость? :)

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #137 : 30 Апрель 2018, 09:31:12 »
Всем привет. Третий десяток лет живём при капитализме, а авралы как были так и остались - вчера только прилетел из командировки. Однако нет худа без добра. Предоставился случай опробовать на практике свой полученный навык в отслеживании.
Николай, тут такая проблема появилась. Мне необходимо отследить перемещение точек. След точки линия. Поскольку линия находится на плоскости Sled, то при вращении сцены по трём осям создаётся ситуация когда взгляд направлен вдоль оси Х или Y, или под очень острым углом к ним, ну и соответственно след становится невидимым. По закону подлости, след оказался невидим именно там, где видеть его просто необходимо.
Можешь предложить что-то, что сделает след (в данном случае линию) видимым вне зависимости от направления взгляда?
Вернёмся к нашим "баранам", к нашей "угадайке".
... можно ввести оценку остатка от кратного деления пройденного пути на длину следа ...

v0 = None
ss = 0

def test(v1):
   if(v0 is None):
      рисовать след в v1
   else:
      dv = v1-v0
      ds = dv.length
      dv = dv/ds
      ss += ds
      while(ss>sl):
         vt = v0 + dv*sl
         vt - это точка в которой нужно рисовать след
        ... далее код рисования следа ...
        ss-=sl
        v0 = vt
Вернулся к предложенному тобой файлу Sled 5.blend. Добавил простенькую текстуру для следа в виде вложенных квадратов и обнаружил что на малых скоростях идёт сплошное наложение следов одного на другой.
Здорово получилось, ты привёл код, который по идее должен упорядочить наложение текстур, а он в свою очередь привлёк моё внимание на формирование следа - всё с точностью до наоборот, по идее я должен был спросить как уйти от наложений, а ты дать код.
Ладно, это всё лирика.
В файл вставил код, уж извини, как угадал. Есть ошибки. Одна из которых постоянное значение (v0 is None) =  True, меня не пускает дальше.
Если не очень занят, то посмотри где я накуралесил. Файл прицепил.

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #138 : 30 Апрель 2018, 09:44:55 »
Novichok, ты ж прочёл до того как наш мудрый админ удалил... неприятно, правда ? :) А прикинь, каково тем людям, которые пытались тебе помочь, и в итоге нарвались на твои непонимание и грубость? :)
Не понял, что за наезд, кому и какая грубость?

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #139 : 30 Апрель 2018, 10:34:04 »
>> Можешь предложить что-то, что сделает след (в данном случае линию) видимым вне зависимости от направления взгляда?
... поменяй форму следа, например небольшой кубик или пирамидку ...

>> Вернёмся к нашим "баранам", к нашей "угадайке"
... в целом в коде много путаницы, и самое главное отсутствие связи, например "... далее код рисования следа ..."  имеется в виду что в этом блоке происходит вызов кода, который добавляет след в сцену, а у тебя след добавляется всегда, как только срабатывает коллизия, далее по тексту была замена ds на ls (этого не нужно делать, то есть это совершенно разные сущности) ...

>> (v0 is None) =  True, меня не пускает дальше.
... так немного выше в коде ты написал v0 = ...

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

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #140 : 30 Апрель 2018, 10:37:52 »
... кстати, а вы на работе используете какие-нибудь схемы или технологические карты? может тебе будет легче рисовать логику, чем описывать ...

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #141 : 30 Апрель 2018, 12:21:06 »
>> Можешь предложить что-то, что сделает след (в данном случае линию) видимым вне зависимости от направления взгляда?
... поменяй форму следа, например небольшой кубик или пирамидку ...
Опа, я думал об использовании трёх плоскостей в трёх осях с точкой в месте их пересечения, но как расположить в них след (линию) ничего придумать не смог.
Николай, а если использовать куб, то это как? Сделать его грани прозрачными и в районе опорной точки создать точку, это я наверно смогу, но нужна-то линия при полной непредсказуемости её направления, точнее зависимости от её произошедшего перемещения.

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #142 : 30 Апрель 2018, 12:38:32 »
... кстати, а вы на работе используете какие-нибудь схемы или технологические карты? может тебе будет легче рисовать логику, чем описывать ...
Технологические карты, графики, задания и т.д. это моя работа. Как руководитель подразделения даю направления при поручении разработки.
Разработку логических схем видел неоднократно у компьютерщиков, но их заморочки меня по работе вообще никак не касаются. Для меня это квадратики, треугольнички, линии и только, хоть я и отдаю себе отчёт что это логические и условные связи.
Тьфу на неё, на работу, давай уж лучше по-простому, на разговорном уровне с минимальным количеством угадаек. Мне так проще разбираться.

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #143 : 30 Апрель 2018, 12:43:36 »
>> с минимальным количеством угадаек. Мне так проще разбираться.
... изложи своё видение последовательности "рисования" следа (по шагам) ...

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #144 : 30 Апрель 2018, 14:37:31 »
>> Вернёмся к нашим "баранам", к нашей "угадайке"
... в целом в коде много путаницы, и самое главное отсутствие связи, например "... далее код рисования следа ..."  имеется в виду что в этом блоке происходит вызов кода, который добавляет след в сцену, а у тебя след добавляется всегда, как только срабатывает коллизия, далее по тексту была замена ds на ls (этого не нужно делать, то есть это совершенно разные сущности) ...
Каким образом выполняется вызов подпрограмм?
ls это переменная длины следа которую я ввёл. Что такое ds ты ведь не удосужился пояснить, вот я и понял что это дельта следа.
Цитировать
>> (v0 is None) =  True, меня не пускает дальше.
... так немного выше в коде ты написал v0 = ...
v0 = None что ли? А, где я должен был это определить? Ты же опять ничего на этот счёт не пояснил. Я рассматривал вариант определения блоке def init():. Меня Python отматюгал, только и всего.
Николай, ты извини меня, но если бы я своим подчинённым пояснял что они должны выполнить, так как это делаешь ты, то скорее всего уже много лет, как студентка-практикантка носил бы бумажки на подпись специалистам из смежных отделов. Ну, пойми ты мой уровень правильно, я новичок который только-только приступает к знакомству с Python и его методами разработки модулей с которыми столкнулся вообще впервые. То, что читал, прояснения мне не дало - оно видно рассчитано на подготовленного человека.
Со скриптами справляюсь поскольку когда-то давно имел скупую практику в Basic и Pascal.
Если тебе такой "фрукт" как я не по зубам, то скажи об этом и я не стану тебя с подобными целями отвлекать. Буду обращаться с вопросами попроще, которые двумя-тремя словами можно пояснить.
Цитировать
... предлагаю перейти на уровень алгоритма, уточнить логику и вернуться к коду ...
... напиши текстом своё видение, как должен формироваться след, это важно чтобы сначала сформировалось общее представление о ходе процесса, а потом уже реализация в коде ...
Если это имеет смысл, то на словах это могу сформулировать примерно так.
В точке касания поверхности колесом устанавливается объект след с предварительной его инициацией, переводом из невидимого слоя в сцену. След выверяется согласно нормали от точки касания колесом поверхности.
В следующем кадре проверяется следующая точка касания на предмет касания поверхности или следа. Коль касание поверхности, то устанавливается объект след, точно так же, как и предыдущий. Коль касание затрагивает объект след, то необходимо перейти к следующему касанию.
Собственно на большой скорости, увидев промежутки между следами я воспринял всё это так, потому и пошёл по пути создания нескольких следов с разной длиной. Кстати, действительно можно создавать на невидимом слое несколько объектов и инициировать их по именам. Я делал их до 6 штук.
Однако, в коде происходит какая-то свистопляска выражаемая тем, что при той же скорости, то следы идут последовательно, то вдруг начинается наложение следов друг на друга с очень малым смещением друг на друге.
Я, собственно, потому и решил начать "танец опять от печки" - от Sled5.blend, и разобраться сначала с наложением следов друг на друга при малой скорости, используя последний вариант предложенного тобою кода.
Как-то так.

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #145 : 30 Апрель 2018, 15:06:21 »
>> Если это имеет смысл, то на словах это могу сформулировать примерно так.


1) В точке касания поверхности колесом устанавливается объект след с предварительной его инициацией, переводом из невидимого слоя в сцену.
// это происходит всегда в точке касания? откуда берётся точка касания?

2) След выверяется согласно нормали от точки касания колесом поверхности.
// да

3) В следующем кадре проверяется следующая точка касания на предмет касания поверхности или следа.
// исходя из логики сенсоров (в контексте этого случая) нет никакого следующего кадра, а что есть?

4) Коль касание поверхности, то устанавливается объект след, точно так же, как и предыдущий.
// да, при условии что пройдено достаточное расстояние для размещения следа

5) Коль касание затрагивает объект след, то необходимо перейти к следующему касанию.
// где осуществляется переход к следующему касанию?


по ходу - допустим у тебя есть две точки касания v0 и v1, между ними 2.2 метра, длина следа 0.4 метра - как будешь заполнять траекторию? ...

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #146 : 30 Апрель 2018, 16:15:57 »
1) В точке касания поверхности колесом устанавливается объект след с предварительной его инициацией, переводом из невидимого слоя в сцену.
// это происходит всегда в точке касания? откуда берётся точка касания?
в 11-той строке
Цитировать
3) В следующем кадре проверяется следующая точка касания на предмет касания поверхности или следа.
// исходя из логики сенсоров (в контексте этого случая) нет никакого следующего кадра, а что есть?
Наверно то что осталось необъяснённым.
Цитировать
5) Коль касание затрагивает объект след, то необходимо перейти к следующему касанию.
// где осуществляется переход к следующему касанию?
Наверно там же, в том что осталось необъяснённым. Я трижды задавал вопрос о том как Python отслеживает построчный текст программы, но ты как партизан - тайну не выдал.
Цитировать
по ходу - допустим у тебя есть две точки касания v0 и v1, между ними 2.2 метра, длина следа 0.4 метра - как будешь заполнять траекторию? ...
Николай, ты мне укажи номера тех ответов, в которых ты мне все свои вопросы уже объяснял. Вот интересно, много найдёшь?

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #147 : 30 Апрель 2018, 20:32:45 »
>> Вот интересно, много найдёшь?
... да, но не в этом суть, посмотри ещё один тестовый вариант во вложении ...

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #148 : 01 Май 2018, 10:03:33 »
>> Вот интересно, много найдёшь?
... да, но не в этом суть, посмотри ещё один тестовый вариант во вложении ...
Лихо! Всё-таки, Николай, ты меня поражаешь. На мой, дилетанта взгляд, код красив, следовательно, и красив алгоритм. Я думаю, что в первую очередь у тебя родился алгоритм, а уж потом подобрался код. Однако алгоритм ведь и есть пояснения к коду. Ну что мешает его вписать в код в качестве комментариев? Банальная лень? Вроде не логично, ведь помогаешь сам, добровольно, с желанием помочь. Тогда что мешает?
Ладно, опять меня на лирику потянуло.
По коду. Всё же Николай, помоги разобраться с твоим модулем. Ну, постарайся поподробнее ответить на мои вопросы.
Строки 5-7 – назначение переменных. Как я понял, происходит один раз. Когда? Эти переменные локальны или глобальны в этот момент?
Строка 9: def init(): - побуждается контроллером в ответ на сенсор «Всегда». Тут наверно вопрос по работе BGE. Как я понимаю, BGE систематически обновляет кадр. Отсюда сенсор «Всегда», так же покадрово должен возбуждать контроллер и соответственно часть модуля def init():. Однако ранее где-то ты утверждал, что эта часть модуля работает единожды. Что-то тут не вяжется. Попытайся понятнее изложить свою мысль.
Строка 14 – global v0, ls почему назначение глобальными переменных производится здесь а не в 5-7 строках, не в блоке init?
Строка 19… Как фрагмент можно прокомментировать:
while((v1-v0).length>ls):   # пока расстояние между точками больше длины следа
            dv = v1-v0      # переменная dv расстояние между точками
            dv/= dv.length      # ? ? ?
            v0 = v0+dv*ls      # ? ? ?


Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #149 : 01 Май 2018, 10:25:01 »
v0 = v0+dv*ls  или если красивее, то v0+=dv*ls , что означает прибавить к вектору v0 вектор dv*ls , где dv*ls это произведение вектора на число (по сути умножение элементов вектора на одно и тоже число) ...
dv/=dv.length - означает деление вектора dv на число (длину самого вектора, по идее нормализация) ...
dv = v1-v0 никак не является расстоянием между точками, поскольку это вектор разности между точками, а вот длина этого вектора dv и есть расстояние ...
http://blender-3d.ru/forum/index.php/topic,326.msg4308.html#msg4308

while((v1-v0).length>ls):
  # пока расстояние между точками больше длины следа

Строка 14 – global v0, ls почему назначение глобальными переменных производится здесь а не в 5-7 строках, не в блоке init?
- это не назначение, а указание что в указанном цепочке кода эти переменных нужно считать глобальными

>> Строка 9: def init(): - побуждается контроллером в ответ на сенсор «Всегда». Тут наверно вопрос по работе BGE. Как я понимаю, BGE систематически обновляет кадр. Отсюда сенсор «Всегда», так же покадрово должен возбуждать контроллер и соответственно часть модуля def init():. Однако ранее где-то ты утверждал, что эта часть модуля работает единожды. Что-то тут не вяжется. Попытайся понятнее изложить свою мысль.
... моя мысль такая - мне нужно инициализировать переменные, для этого в начале работы требуется запустить эту процедуру, без разницы каким способом, главное один раз при старте ...
... можешь сделать это любым другим доступным способом ...

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

>> Ну что мешает его вписать в код в качестве комментариев? Банальная лень?
>> код красив, следовательно, и красив алгоритм.
... это нарушает красоту кода, да-да, мне не нравятся комментарии, поскольку код становится не читаемым, чем меньше текста, тем легче код для понимания ...




 


Яметрика

* По форуму

* Рекламный блок

* Последние вложения

1 (1).png
Скачано: 68
Автор: LEXA ANЭGROWND
blender.png
Скачано: 78
Автор: ipv2007
4.png
Скачано: 100
Автор: hiroyukiss
2.png
Скачано: 122
Автор: hiroyukiss

Скачано: 112
Автор: Dilifa12