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

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

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #195 : 20 Июнь 2018, 03:21:58 »
>> Изменяю размер следа по оси Y, а изменяется по оси Х. Как это получается, есть какие-то соображения на этот счёт?
... не удалось добиться такого результата, изменения по осям соответствуют заявленным значениям ...
... опиши последовательность своих действий, приводящих к неверному результату ...

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #196 : 20 Июнь 2018, 09:32:30 »
>> Изменяю размер следа по оси Y, а изменяется по оси Х. Как это получается, есть какие-то соображения на этот счёт?
... не удалось добиться такого результата, изменения по осям соответствуют заявленным значениям ...
... опиши последовательность своих действий, приводящих к неверному результату ...
Николай, направляю файл. Надеюсь что у тебя раскроются те же самые окна что и я вижу с выделенным объектом sled.
Запусти движок и наблюдай. Жёлтое колесо медленно начнёт движение вверх по экрану открывая грунт. В месте первого следа чётко видно соответствие ширины колеса и следа, т.е. по оси Х.
Останови движок. Активируй второй слой и не меняя масштаба окон просто в окошке "Размер" по оси Y измени размер в любую сторону.
Запусти движок предварительно активировав первый слой.
У меня получается, в результате изменения значения по оси Y изменяется ширина следа, как на моём рисунке. Перед отправлением файла ещё раз убедился, что всё происходит именно так и после перезагрузки компа.

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #197 : 20 Июнь 2018, 16:55:54 »
Тут ещё интересный момент есть.
Во внутрь блока: while (v1-v0).length>=ls:
вставил: print("46 ob = ", ob), и обнаружил что сюда Blender не заглядывает - нет распечатки в консоли этой строки. Тогда каким образом появляется след от колеса, если его появление выполняется только внутри этого блока?

А, эта строка: v0=v0+dv.normalized()*ls зачем изменяет v0? и тут же
db['v0'] = v0
В каком случае возможно выполнение условия:
while (v1-v0).length>=ls:?
« Последнее редактирование: 20 Июнь 2018, 17:17:50 от Novichok »

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

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #198 : 21 Июнь 2018, 01:01:48 »
>>Во внутрь блока: while (v1-v0).length>=ls:
>>вставил: print("46 ob = ", ob), и обнаружил что сюда Blender не заглядывает - нет распечатки в консоли этой строки. Тогда >>каким образом появляется след от колеса, если его появление выполняется только внутри этого блока?
... вложи файл с этой вставкой, это ненормальное поведение и в таком случае след не должен появляться ...

>> А, эта строка: v0=v0+dv.normalized()*ls зачем изменяет v0? и тут же db['v0'] = v0
... это не так, "тут же" не подходит для понимания хода исполнения кода на python, поскольку там разные отступы и следовательно это разные логические блоки, то есть v0=v0+dv.normalized()*ls выполняется в цикле, а db['v0'] = v0 после цикла (исходя из контекста кода) ...

>> "Размер" по оси Y измени размер в любую сторону.
... это косяк программирования (написания кода), то есть выравнивать нужно не по оси X, а по оси Y, то есть в коде заменить
ob.alignAxisToVect(dv,0,1) на ob.alignAxisToVect(dv,1,1) ...


... с учётом выше сказанного предлагаю внести следующие правки в код ...
Код: python
    if obp:
        v1 = point
        if (w-v1).length<1.05*r and 'v0' in db:
            v0 = db['v0']
            while (v1-v0).length>=ls:
                dv = (v1-v0)
                ob = sc.addObject(sl)
                ob.worldPosition = v0+vu*0.03
                ob.alignAxisToVect(normal,2,1)
                ob.alignAxisToVect(dv,1,1)
                v0=v0+dv.normalized()*ls
            db['v0'] = v0
        else:
            db['v0'] = v1



Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #199 : 21 Июнь 2018, 08:45:19 »
>>Во внутрь блока: while (v1-v0).length>=ls:
>>вставил: print("46 ob = ", ob), и обнаружил что сюда Blender не заглядывает - нет распечатки в консоли этой строки. Тогда >>каким образом появляется след от колеса, если его появление выполняется только внутри этого блока?
... вложи файл с этой вставкой, это ненормальное поведение и в таком случае след не должен появляться ...
Вложен в моём 196 ответе
Цитировать
>> А, эта строка: v0=v0+dv.normalized()*ls зачем изменяет v0? и тут же db['v0'] = v0
... это не так, "тут же" не подходит для понимания хода исполнения кода на python, поскольку там разные отступы и следовательно это разные логические блоки, то есть v0=v0+dv.normalized()*ls выполняется в цикле, а db['v0'] = v0 после цикла (исходя из контекста кода) ...
Уточню свой вопрос: строка: v0=v0+dv.normalized()*ls зачем изменяет v0?

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #200 : 21 Июнь 2018, 10:25:40 »
Николай, я нашёл момент входа в блок while (v1-v0).length>=ls:
Вопрос снимаю.
Однако теперь другой вопрос, собственно к которому и подбирался:
Почему теряется текстура следа?

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

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #201 : 21 Июнь 2018, 13:29:07 »
>>Уточню свой вопрос: строка: v0=v0+dv.normalized()*ls зачем изменяет v0?
... ради этого затевался цикл, чтобы отрисовать все фрагменты  следа длиной ls между v0 и v1 ...

>> Почему теряется текстура следа?
... не знаю ...

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #202 : 21 Июнь 2018, 15:22:06 »
>>Уточню свой вопрос: строка: v0=v0+dv.normalized()*ls зачем изменяет v0?
... ради этого затевался цикл, чтобы отрисовать все фрагменты  следа длиной ls между v0 и v1 ...

>> Почему теряется текстура следа?
... не знаю ...
Николай, я запустил движок в каркасном режиме отображения.
Результат: создано 5 объектов sled за 20 обращений в блок while (v1-v0).length>=ls:
Получается что для создания одного объекта используются 4 обращения в блок while. Может здесь собака зарыта, потому и теряется текстура, что накладывается одна на другую со смещением? Честно говоря твой код никак не проглочу - вроде всё понятно, но что-то не укладывается, а что, толком не понимаю.

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #203 : 21 Июнь 2018, 17:48:49 »
Извиняюсь Николай, 4 обращения, это 4 колеса. Так что смазанная текстура по какой-то другой причине.

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

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #204 : 21 Июнь 2018, 20:06:13 »
... у тебя ls чему равно? ...

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #205 : 21 Июнь 2018, 21:02:00 »
... у тебя ls чему равно? ...
6 см. - 3 фрагмента, ширина 15 см.
Можно текстуры следа изменять по длине кратно 2 см. от 1 фрагмента до 6-ти, т.е. длина (ls) от 2 см. до 12 см. (есть текстуры).
« Последнее редактирование: 21 Июнь 2018, 21:36:06 от Novichok »

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

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #206 : 21 Июнь 2018, 21:42:32 »
... то есть ls = 0.06? попробуй увеличить ls так чтобы между фрагментами был виден зазор например ls = 0.16 ...

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #207 : 21 Июнь 2018, 21:59:50 »
... то есть ls = 0.06? попробуй увеличить ls так чтобы между фрагментами был виден зазор например ls = 0.16 ...
Не понял идею. Изменить длину следа?

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

  • Житель
  • emerge --keep-going
Re: Странное поведение в BGE
« Ответ #208 : 21 Июнь 2018, 22:06:55 »
>> Не понял идею. Изменить длину следа?
... судя по картинке у тебя длина фрагмента не 6 см? установи ls=0.15 и посмотри будет ли наложение ...

Оффлайн Novichok

  • Житель
Re: Странное поведение в BGE
« Ответ #209 : 22 Июнь 2018, 07:59:15 »
>> Не понял идею. Изменить длину следа?
... судя по картинке у тебя длина фрагмента не 6 см? установи ls=0.15 и посмотри будет ли наложение ...
И, опять я не понял идею. Надо изменить в коде оставив прежние размеры объекта, надо изменить размеры объекта, оставив неизменными в коде, надо изменить в коде и размер объекта? Последняя моя картинка: в коде - ls=0.16, объект Х=15, Y=15, 6 сегментов (6 выступов на краях шины). До этого текстура была с 3-мя выступами и длиной 6 см.
Сделал ещё две пробы. Сориентируй в какую сторону грести предлагаешь. Я не спец, но вдруг что-то выйдет, не даром же говорят что чудакам везёт.


 


Яметрика

* По форуму

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

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

1 (1).png
Скачано: 64
Автор: LEXA ANЭGROWND
blender.png
Скачано: 74
Автор: ipv2007
4.png
Скачано: 96
Автор: hiroyukiss
2.png
Скачано: 119
Автор: hiroyukiss

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