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

Оффлайн Barabashka

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6225 : 16 Ноябрь 2017, 18:34:30 »
>> найти ошибку
... выбери объект "Cube", раскрой сенсор Always (первый из назначенных тобой сенсоров для этого объекта) и нажми на первые две кнопки (с точками сверху и снизу) ...
Зевнул. Спасибо Николай за помощь.

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6226 : 16 Ноябрь 2017, 18:40:48 »
Цитировать
Коэффициент d = 3, как я понял, это расстояние между кубом и конусом, в этом его смысл?

Вероятно да, а так же это радиус окружности:

тогда:
x=R*sin(угол в радианах)+a
y=R*cos(угол в радианах)+b


« Последнее редактирование: 16 Ноябрь 2017, 18:59:11 от Samovar »

Оффлайн Barabashka

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6227 : 17 Ноябрь 2017, 09:01:03 »
Цитировать
Коэффициент d = 3, как я понял, это расстояние между кубом и конусом, в этом его смысл?

Вероятно да, а так же это радиус окружности:

тогда:
x=R*sin(угол в радианах)+a
y=R*cos(угол в радианах)+b



Samovar, спасибо за пояснения. Проблема с математикой есть, но ещё большая проблема с модулями math и mathutils, с грамматикой их использования. В этом, мне думается, никто кроме меня самого помочь не сможет. Если есть ссылка на русскоязычный обучающий текст, то был бы рад с ним (текстом) ознакомиться.

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6228 : 17 Ноябрь 2017, 10:15:47 »
Barabashka, по модулю math, поисковик сразу "выплюнул" ссылку https://pythonworld.ru/moduli/modul-math.html
По модулю mathutils я нифига не знаю, и не пойму зачем он там вообще в примере... Я туго сам соображаю и в алгебре, и в Python. Просто, что сам понял из примера от Николай Николаев, тем с тобой и поделился, как смог ...

нашел про mathutils
A general math utilities library providing Matrix, Vector, Quaternion, Euler and Color classes, written in C for speed.
Общая математическая библиотека, предоставляющая классы Matrix, Vector, Quaternion, Euler и Color, написанные на Cи для скорости.
видимо она нужна для этой строки в проге:e = r.to_euler()[2]

В общем,  тебе  нужно будет ещё врубиться в матрицы и вектора:
http://compgraphics.info/3D/3d_definitions.php
http://compgraphics.info/3D/3d_affine_transformations.php
« Последнее редактирование: 17 Ноябрь 2017, 10:57:10 от Samovar »

Оффлайн Barabashka

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6229 : 17 Ноябрь 2017, 12:13:01 »
Barabashka, по модулю math, поисковик сразу "выплюнул" ссылку https://pythonworld.ru/moduli/modul-math.html
По модулю mathutils я нифига не знаю, и не пойму зачем он там вообще в примере... Я туго сам соображаю и в алгебре, и в Python. Просто, что сам понял из примера от Николай Николаев, тем с тобой и поделился, как смог ...

нашел про mathutils
A general math utilities library providing Matrix, Vector, Quaternion, Euler and Color classes, written in C for speed.
Общая математическая библиотека, предоставляющая классы Matrix, Vector, Quaternion, Euler и Color, написанные на Cи для скорости.
видимо она нужна для этой строки в проге:e = r.to_euler()[2]

В общем,  тебе  нужно будет ещё врубиться в матрицы и вектора:
http://compgraphics.info/3D/3d_definitions.php
http://compgraphics.info/3D/3d_affine_transformations.php
Я тоже пытался через поисковик найти хоть что-то более-менее понятное, но видно знаний столь мало, что всё это для меня "тёмный лес" да ещё в новолуние. Остаётся тупо применять то, что другими разработано.
Samovar, а как можно, например для контроля, получить углы в градусах куба и конуса в моём примере? Всё же измерение в градусах привычнее измерения в радианах, которое и представить-то для меня невозможно.

Оффлайн Barabashka

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6230 : 17 Ноябрь 2017, 13:01:05 »
Samovar, вы извините что я злоупотребляю вашим вниманием, но ваш опыт явно больше моего в Blender.
Мы общаемся в этой теме уже не первый раз, и вы наверно заметили, что вопросы у меня по ходу появляются до тех пор, пока я не рассмотрю очевидные для меня варианты или упрусь "рогом" во что-то совсем мне недоступное для понимания.
В моём примере слежения если установить некий предел вращению куба, например 30 градусов, по достижению которого конус должен резко изменить свою направленность, т.е. развернуться по какой-то своей оси (например изменить направленность острия), на какой-то угол, то мне думается что потребуются не очень значительные изменения.
Вы могли бы предложить скрипт с такими изменениями?

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

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #6231 : 17 Ноябрь 2017, 13:26:17 »
... если, что то можно при наличии конкретных вопросов продолжить эту тематику http://blender-3d.ru/forum/index.php/topic,326.msg4308.html#msg4308 ...

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

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #6232 : 17 Ноябрь 2017, 19:42:26 »
... если оно будет понятней, то вот запись того же функционала в векторной форме ...
Код: bge
import bge
import mathutils
import math

scene = bge.logic.getCurrentScene()
cube = scene.objects["Cube"]
cone = scene.objects["Cone"]

d = 3

cone.worldOrientation = cube.worldOrientation
cone.worldPosition = cube.worldPosition + cube.worldOrientation*mathutils.Vector((0,d,0))

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6233 : 17 Ноябрь 2017, 23:54:16 »
Цитировать
Samovar, а как можно, например для контроля, получить углы в градусах куба и конуса в моём примере? Всё же измерение в градусах привычнее измерения в радианах, которое и представить-то для меня невозможно.
я же давал ссылку на описание модуля math https://pythonworld.ru/moduli/modul-math.html

math.degrees(X) - конвертирует радианы в градусы.
math.radians(X) - конвертирует градусы в радианы.


Цитировать
В моём примере слежения если установить некий предел вращению куба, например 30 градусов, по достижению которого конус должен резко изменить свою направленность, т.е. развернуться по какой-то своей оси (например изменить направленность острия), на какой-то угол, то мне думается что потребуются не очень значительные изменения.
создай условие if , но самостоятельно... если самостоятельно не пробовать, то понимания не возникнет...

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6234 : 18 Ноябрь 2017, 03:27:48 »
Код
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)


http://bgepython.tutorialsforblender3d.com/GameObject/applyRotation
Переводчик тут: http://blender-3d.ru/forum/index.php/topic,1976.0.html

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6235 : 18 Ноябрь 2017, 03:39:32 »
Просьба. Barabashka, пиши пожалуйста свои вопросы по BGE в этой теме: http://blender-3d.ru/forum/index.php/topic,1496.0.html

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6236 : 18 Ноябрь 2017, 04:03:29 »
... если, что то можно при наличии конкретных вопросов продолжить эту тематику http://blender-3d.ru/forum/index.php/topic,326.msg4308.html#msg4308 ...

У меня такие вопросы возникли:



Какое действие (или действия) над векторами А (отраженный вектор) и B (нормаль к поверхности) надо проделать, чтобы полученный вектор С стал равен B. То есть нормали к поверхности?




И какое действие (или действия) над векторами А (зрительный вектор) и B (нормаль к поверхности) надо проделать, чтобы полученный вектор С стал равен B. То есть нормали к поверхности?

Заранее благодарю за ответ.
« Последнее редактирование: 18 Ноябрь 2017, 04:21:05 от Samovar »

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

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #6237 : 18 Ноябрь 2017, 05:47:23 »
>>И какое действие (или действия) над векторами А и B  надо проделать, чтобы полученный вектор С стал равен B. То есть нормали к поверхности?

... если у тебя A и B заданы, то чтобы C стал равен B нужно присвоить C = B ...
... или ты хочешь получить вектор, который на картинке (типа угол падения = углу отражения)? ...

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #6238 : 18 Ноябрь 2017, 06:01:55 »
Цитировать
... или ты хочешь получить вектор, который на картинке (типа угол падения = углу отражения)? ..
Спасибо за ответ. В принципе да, но чтобы он был постоянно всегда перпендикулярен поверхности, как нормаль, при различных исходных данных для этого:  зрительный луч (View) А и нормаль материала B... Извиняюсь, если схема кривая и непонятная... хрен его знает, как ещё вопрос сформулировать... То есть, зрительный луч(или падающий на поверхность луч) может быть под разным углом к поверхности, но отраженный луч всегда должен быть ей перпендикулярен (нормаль B - это нормали текстур материала). Может для этого какие-то иные узлы для векторов нужны? В принципе XYZ легко конвертируются в RGB  и обратно... но я ума не приложу как решить мой вопрос правильно... результаты Add и Average подходят, методом научного тыка, но не вполне точны... В общем, мне нужно  зеркальное отражение луча повернуть перпендикулярно поверхности, на базе исходных векторов.
« Последнее редактирование: 18 Ноябрь 2017, 06:32:51 от Samovar »

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

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #6239 : 18 Ноябрь 2017, 06:32:07 »
>> В принципе да, но чтобы он был постоянно всегда перпендикулярен поверхности, как нормаль
... это противоречивая постановка ...

>> нормаль B - это нормали текстур материала
... собственно это нормаль к поверхности в точке ...

>> зрительный луч(или падающий на поверхность луч)
>> но отраженный луч всегда должен быть ей перпендикулярен
... из точки (которую приходит луч) выходит нормаль, из этой же точки должен выходить отраженный луч ...
... первое условие которые ты ставишь - он должен быть быть перпендикулярен к поверхности, то есть по направлению совпадает с нормалью ...
... второе условие не понятно, может быть тебе нужно чтобы эти лучи были одинаковой длины? ...

 


Яметрика

* По форуму

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

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

1 (1).png
Скачано: 67
Автор: LEXA ANЭGROWND
blender.png
Скачано: 77
Автор: ipv2007
4.png
Скачано: 99
Автор: hiroyukiss
2.png
Скачано: 121
Автор: hiroyukiss

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