Абсолютное позиционирование
10 ноября 2015 08:26
Здравствуйте, форумчане и сочувствующие!
Задача следующая - есть объект и нужно узнать его начальные координаты, есть произвольно размещённый объект и его координаты тоже надо узнать. Система координат и нулевая точка должны быть одни для обоих объектов.
Какой я вижу вариант: Мои объекты по сути не будут выходить за пределы полусферы, поэтому целесообразно сделать сферу, поместив в неё всё необходимое и внутри неё выполнять то, что надо. Подскажите, как это сделать и возможно есть лучший путь)
Задача следующая - есть объект и нужно узнать его начальные координаты, есть произвольно размещённый объект и его координаты тоже надо узнать. Система координат и нулевая точка должны быть одни для обоих объектов.
Какой я вижу вариант: Мои объекты по сути не будут выходить за пределы полусферы, поэтому целесообразно сделать сферу, поместив в неё всё необходимое и внутри неё выполнять то, что надо. Подскажите, как это сделать и возможно есть лучший путь)
10 ноября 2015 17:14
11 ноября 2015 10:41
Ответ на сообщение пользователя Юрий КовеленовЗдравствуйте, а могу я разместить объект точно в точке н-р (0,0) ?
Здравствуйте,
Объекты можно расставлять/получать их координаты с помощью методов модуля transform.
Метод distance - как вычисляет расстояние, относительно крайней точки?
Могу ли я поместить крайнюю точку объекта в заданные координаты или лучше создать 3d объект - круг, привязав к нему искомый и двигая уже эту точку?
11 ноября 2015 10:56
могу я разместить объект точно в точке н-р (0,0) ?Почему нет? В любой точке.
Метод distance - как вычисляет расстояние, относительно крайней точки?До центра объекта, заданного в Blender.
Могу ли я поместить крайнюю точку объекта в заданные координаты или лучше создать 3d объект - круг, привязав к нему искомый и двигая уже эту точку?Координаты объекта отсчитываются по его центру. Привязывать объекты связью родитель-потомок (parenting) тоже можно если это удобно.
02 декабря 2015 10:02
Добрый день.
Давайте я попробую ответить на ваши вопросы. Для начала расскажу про world space. Это мировая система координат, ее точка отсчета совпадает с координатами в Blender. Единственное отличие - направление некоторых координатных осей изменены.
Local space - это система отсчета, связанная с конкретным объектом. Точка отсчета в данном случае - это ориджин объекта. Его можно наблюдать в Blender, если вы выделите объект. Вы увидите координатные оси, исходящие из маленькой желтой точки. Это оно и есть. Направления некоторых координатных осей тоже изменены как на картинке.
Вы говорили про крайние точки геометрии объекта. Если что, мы вычисляем их и строим куб, которых охватывает геометрию объекта по этим крайним точкам. Называется он bounding box.
А чем отличается SPACE_WORLD и SPACE_LOCAL
Давайте я попробую ответить на ваши вопросы. Для начала расскажу про world space. Это мировая система координат, ее точка отсчета совпадает с координатами в Blender. Единственное отличие - направление некоторых координатных осей изменены.
Local space - это система отсчета, связанная с конкретным объектом. Точка отсчета в данном случае - это ориджин объекта. Его можно наблюдать в Blender, если вы выделите объект. Вы увидите координатные оси, исходящие из маленькой желтой точки. Это оно и есть. Направления некоторых координатных осей тоже изменены как на картинке.
Вы говорили про крайние точки геометрии объекта. Если что, мы вычисляем их и строим куб, которых охватывает геометрию объекта по этим крайним точкам. Называется он bounding box.
02 декабря 2015 10:08
поделюсь своими "научными" изысканиями
позиционирование объекта :
относительного другого объекта
глобально
function GetObjectInfo(objPicked){
var SummuryInfo="";
var object_size = "";
var object_name = "";
var object_b_b_topPoint = "";
var object_b_b_bottomPoint = "";
var translation = "";
var object_height = "";
var Accuracy = 3;
var Which_Canvas = "";
var Object_Data_id = "";
object_name = "Имя: " + m_scenes.get_object_name(objPicked) + "<br>";
object_b_b_topPoint = "Верхняя точка: " + m_trans.get_object_bounding_box(objPicked).max_y.toPrecision(Accuracy) + "<br>";
object_b_b_bottomPoint = "Нижняя точка: " + m_trans.get_object_bounding_box(objPicked).min_y.toPrecision(Accuracy) + "<br>";
translation = "Положение центра:" + "<br>"
+ " X = " + m_trans.get_translation(objPicked)[0].toPrecision(Accuracy)+ "<br>"
+ " Y = " + m_trans.get_translation(objPicked)[1].toPrecision(Accuracy)+ " - Это ВВЕРХ!!!" + "<br>"
+ " Z = " + m_trans.get_translation(objPicked)[2].toPrecision(Accuracy)+ "<br>";
//m_trans.distance(objME,SubMenuOpen );
object_height = "Высота объекта: " + (m_trans.get_object_bounding_box(objPicked).max_y - m_trans.get_object_bounding_box(objPicked).min_y) + "<br>";
Object_Data_id = "Object_Data_id " + m_scenes.get_object_data_id(objPicked) + "<br>";
//object_size = "Размер объекта: " + m_trans.get_object_size(objPicked).toPrecision(Accuracy) + "<br>";
Which_Canvas = "main_canvas_container" + "<br>";
SummuryInfo = Which_Canvas + object_name + translation + object_b_b_topPoint + object_b_b_bottomPoint + object_height + Object_Data_id;
return SummuryInfo;
}
позиционирование объекта :
относительного другого объекта
m_trans.set_translation_obj_rel(SubMenuOpen, 0, 0, 0, m_scenes.get_object_by_name("MainMenu1"));
глобально
m_trans.set_translation(LoadedObject, 0, 0, 0);
Дорогу осилит идущий