Автор Тема: Тема для быстрых вопросов от новичков  (Прочитано 1319091 раз)

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

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #6240 : 18 Ноябрь 2017, 06:39:47 »
... еще раз поясни на картинке ...
... N - нормаль ...
... A - приходящий луч ...
... C - луч 1) перпендикулярный поверхности 2) не понятное условие ...


Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6241 : 18 Ноябрь 2017, 06:46:11 »

имеется  ввиду средний вектор для глянцевых отражений


чтобы  переделать глянцевые(б) в диффузные(а), мне надо средний вектор развернуть перпендикулярно поверхности, а угол конуса и количество семплов - это настраиваемые параметры (это не столь важно).
Но как это сделать правильно, ума не приложу... (это продолжение моих заморочек с интерналом) Я пробовал Specular шейдеры переделывать в диффузные таким способом Аdd или Average (A - View и B - Normal) методом научного тыка, но не вполне врубаюсь, верно ли это, или может есть правильный способ?


Вот пример:
« Последнее редактирование: 18 Ноябрь 2017, 07:05:53 от Samovar »

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6242 : 18 Ноябрь 2017, 07:25:03 »
... еще раз поясни на картинке ...
... N - нормаль ...
... A - приходящий луч ...
... C - луч 1) перпендикулярный поверхности 2) не понятное условие ...



Смысл в том, чтобы при любом A получался не вектор  отражения, а вектор нормали...
То есть, допустим, под каким бы углом к поверхности не пришел луч, он должен отражаться перпендикулярно поверхности. Как это сделать правильно?
Или если не сложно, поясни, что я методом научного тыка намутил, сложив эти два вектора... или дай ссылку на наводящую инфу, желательно на русском. Спасибо!

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

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #6243 : 18 Ноябрь 2017, 07:32:36 »
>> он должен отражаться перпендикулярно поверхности. Как это сделать правильно?
... это нормаль ...
... если тебе нужен вектор такой же длины как входящий, то нужно нормаль умножить на длину вектора ...

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6244 : 18 Ноябрь 2017, 07:52:32 »
Спасибо, приму к сведению.
Хорошо, тогда мне нужно просто получить отраженный вектор как Reflection в Cycles. Не подскажешь как это сделать? В интернале нет такого.

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

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #6245 : 18 Ноябрь 2017, 07:53:04 »
... посмотрел файл с моделью, мне думается, что источник проблемы это выход Normal узла Geometry, который по-разному трактуется в Blender Render и Cycles Render) или мне показалось? ...
... можешь сравнить описание Normal в этих рендерах? ...

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

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #6246 : 18 Ноябрь 2017, 07:57:30 »
>>В интернале нет такого.
... а это причина моего непонимания твоего вопроса, практически сразу подсел на Cycles, и то что увидел в твоем примере в узле Geometry меня смутило ...
... брось выход нормаль на цвет материала, в Cycles цвет меняться не будет - поскольку это нормаль к поверхности, а вот в Blender Render он меняется - это что за выход такой Normal ? ...

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6247 : 18 Ноябрь 2017, 08:22:31 »
Ясно...В интернале, это нормали к поверхности ракурса вида (Z - глубина). Это как прицепить к камере дочерними три светильника RGB типа Hemi с направлениями XYZ локальных координат камеры. И затем крутить камеру вместе со светильниками...
В этом ошибка постановки моего вопроса. Хорошо, почитаю, врублюсь. Благодарю за помощь. Хоть чуток на ум понимание пришло...

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

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #6248 : 18 Ноябрь 2017, 08:48:12 »
... пых, вот вроде получилось нормаль поверхности высчитать, попробуй это применит для исследования своего вопроса (файл во вложении) ...
... на картинке сравнение "колоризации" нормалей ...


Оффлайн Barabashka

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6249 : 18 Ноябрь 2017, 09:40:07 »
Цитировать
Samovar, а как можно, например для контроля, получить углы в градусах куба и конуса в моём примере? Всё же измерение в градусах привычнее измерения в радианах, которое и представить-то для меня невозможно.
я же давал ссылку на описание модуля math https://pythonworld.ru/moduli/modul-math.html
Если честно, то я её просто не помню, видно что-то тогда отвлекло. К тому же летом у меня диск гавкнулся. Обычно такие ссылки храню на внешнем диске, но данную ссылку почему-то не сохранил. В общем, уж извините разгильдяя - сейчас сохранил.
Цитировать
Цитировать
В моём примере слежения если установить некий предел вращению куба, например 30 градусов, по достижению которого конус должен резко изменить свою направленность, т.е. развернуться по какой-то своей оси (например изменить направленность острия), на какой-то угол, то мне думается что потребуются не очень значительные изменения.
создай условие if , но самостоятельно... если самостоятельно не пробовать, то понимания не возникнет...
Условие не проблема. Проблема в изменении ориентации конуса по какой-то другой оси с неким углом.

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

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #6250 : 18 Ноябрь 2017, 09:51:17 »
>> Условие не проблема. Проблема в изменении ориентации конуса по какой-то другой оси с неким углом.
... как раз наоборот, изменение ориентации - это математика, и тут ничего сложного нет ...
... а вот условие (проработка последовательности принятия решений, алгоритм что делать) это проблема ...
... опиши простым русским языком что и как должно действовать, типа - иду по коридору, стукнулся об косяк -> упал, отжался ...

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6251 : 18 Ноябрь 2017, 09:51:37 »
Barabashka, я тебе там и дальше ответил : http://blender-3d.ru/forum/index.php/topic,427.msg27733.html#msg27733



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

Оффлайн Barabashka

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6252 : 18 Ноябрь 2017, 10:03:00 »
Код
import bge                           # импортируем модуль BGE
import math                         # импортируем модуль Math
import mathutils                    # импортируем модуль mathutils

scene = bge.logic.getCurrentScene() # получить текущую сцену
objList = scene.objects             # получить список объектов
cube = objList["Cube"]                # получить объект Cube из objList
cone = objList["Cone"]               # получить объект Cone из objList

d = 6
p = cube.worldPosition              # получить положение Cube в мире
r = cube.worldOrientation           # получить ориентацию Cube в мире
e = r.to_euler()[2]                 # получить ориентацию Cube по оси Z
grad = math.degrees(e)
ugol = 180
rot = [0,0,math.radians(ugol)]

cone.worldPosition = [p[0] - d*math.sin(e), p[1] + d*math.cos(e), p[2]]
cone.worldOrientation = r
if grad < 0 or grad > 30:
   cone.applyRotation(rot, True)

Это то, что доктор прописал. Спасибо большое.
Samovar, а как вы умудрились в коде выделить import, if и or? Я попытался в вашем коде выделить с помощью кнопок фрагменты, но у меня ничего не получилось.


Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6253 : 18 Ноябрь 2017, 10:13:26 »
Это мне неведомо :)  Движок сайта сам определяет язык программирования в тегах код, и выделяет его ключевые слова.

Оффлайн Barabashka

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6254 : 18 Ноябрь 2017, 10:16:25 »
>> Условие не проблема. Проблема в изменении ориентации конуса по какой-то другой оси с неким углом.
... как раз наоборот, изменение ориентации - это математика, и тут ничего сложного нет ...
... а вот условие (проработка последовательности принятия решений, алгоритм что делать) это проблема ...
... опиши простым русским языком что и как должно действовать, типа - иду по коридору, стукнулся об косяк -> упал, отжался ...
Спасибо большое Николай за внимание и помощь. Собственно, Самовар мне уже разъяснил мои непонятки строками:
grad = math.degrees(e)
ugol = 180
rot = [0,0,math.radians(ugol)]
и
cone.applyRotation(rot, True)
Ещё раз большое спасибо за помощь.

 


Яметрика

* По форуму

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

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

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

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