Форум

Абсолютное позиционирование

10 ноября 2015 08:26 #4867
Здравствуйте, форумчане и сочувствующие!
Задача следующая - есть объект и нужно узнать его начальные координаты, есть произвольно размещённый объект и его координаты тоже надо узнать. Система координат и нулевая точка должны быть одни для обоих объектов.
Какой я вижу вариант: Мои объекты по сути не будут выходить за пределы полусферы, поэтому целесообразно сделать сферу, поместив в неё всё необходимое и внутри неё выполнять то, что надо. Подскажите, как это сделать и возможно есть лучший путь)
10 ноября 2015 17:14 #4885
Здравствуйте,

Объекты можно расставлять/получать их координаты с помощью методов модуля transform.

Руководитель разработки
11 ноября 2015 10:41 #4903

Ответ на сообщение пользователя Юрий Ковеленов
Здравствуйте,

Объекты можно расставлять/получать их координаты с помощью методов модуля transform.
Здравствуйте, а могу я разместить объект точно в точке н-р (0,0) ?
Метод distance - как вычисляет расстояние, относительно крайней точки?
Могу ли я поместить крайнюю точку объекта в заданные координаты или лучше создать 3d объект - круг, привязав к нему искомый и двигая уже эту точку?
11 ноября 2015 10:56 #4904
могу я разместить объект точно в точке н-р (0,0) ?
Почему нет? В любой точке.
Метод distance - как вычисляет расстояние, относительно крайней точки?
До центра объекта, заданного в Blender.
Могу ли я поместить крайнюю точку объекта в заданные координаты или лучше создать 3d объект - круг, привязав к нему искомый и двигая уже эту точку?
Координаты объекта отсчитываются по его центру. Привязывать объекты связью родитель-потомок (parenting) тоже можно если это удобно.
Руководитель разработки
01 декабря 2015 11:48 #5446

В любой точке.
А чем отличается SPACE_WORLD и SPACE_LOCAL
02 декабря 2015 10:02 #5474
Добрый день.

А чем отличается SPACE_WORLD и SPACE_LOCAL

Давайте я попробую ответить на ваши вопросы. Для начала расскажу про world space. Это мировая система координат, ее точка отсчета совпадает с координатами в Blender. Единственное отличие - направление некоторых координатных осей изменены.

Local space - это система отсчета, связанная с конкретным объектом. Точка отсчета в данном случае - это ориджин объекта. Его можно наблюдать в Blender, если вы выделите объект. Вы увидите координатные оси, исходящие из маленькой желтой точки. Это оно и есть. Направления некоторых координатных осей тоже изменены как на картинке.

Вы говорили про крайние точки геометрии объекта. Если что, мы вычисляем их и строим куб, которых охватывает геометрию объекта по этим крайним точкам. Называется он bounding box.
Разработчик Blend4Web
02 декабря 2015 10:08 #5475
поделюсь своими "научными" изысканиями
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); 

Дорогу осилит идущий
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.