GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (228 стр.)

Сообщения на форуме пользователя Andrey (228 стр.)

Проблемы с отрисовкой узлов Octree-дерева15 фев. 200516:15#8
White Wolf
может скинуть код построения?
вот он:
//Обработка узла
void Octree::ProcessingNode(const vector<Vector3D>& verticles, OctreeNode *&node, int Depth = 0)
{
	//выход при нулевом узле
	if (!node)
		return;
	//проверка глубины разбиения
	if (Depth > DepthOctree)
		return;
	int i;
	int j;
	//Вершина 1
	Vector3D vert0;
	//Вершина 2
	Vector3D vert1;
	//Вершина 3
	Vector3D vert2;
	//Указатель на ограничивающее тело
	AABB *BoundingBox = &node -> GetBoundingBox();
	//цикл по полигонам
	for (i = 0; i < int(verticles.size()); i+=3) {
		//Получить вершину 1
		vert0 = verticles[i];
		//Получить вершину 2
		vert1 = verticles[i + 1];
		//Получить вершину 3
		vert2 = verticles[i + 2];
		//проверить нахождение 3 точек полигона в ограничивающем теле
		if (BoundingBox -> contains(vert0, vert1, vert2))
			//добавить индекс в узел
			node -> AddIndexPoligon(i);
	}
	//Есть дочерние узлы
	node -> SetIsChild();
	//обработка
	//разбить на 8 боксов бокс узла
	SplitterOn8BoundingBox(node);
	//Дочерний указатель
	OctreeNode *childNode;
	//цикл по 8 дочерним узлам
	for (i = 0; i < 8; i++) {
		//получить указатель на i-го потомка узла
		childNode = node -> GetChildNode(i);
		//получить указатель на ограничивающее тело
		BoundingBox = &childNode -> GetBoundingBox();
		//цикл по полигонам
		for (j = 0; j < int(verticles.size()); j+=3) {
			//Получить вершина 1
			vert0 = verticles[i];
			//Получить вершина 2
			vert1 = verticles[i + 1];
			//Получить вершина 3
			vert2 = verticles[i + 2];
			//проверить нахождение 3 точек полигона в ограничивающем теле
			if (BoundingBox -> contains(vert0, vert1, vert2))
				//добавить индекс в узел
				childNode -> AddIndexPoligon(j);
		}
		//Обработка дочернего узла узла
		ProcessingNode(verticles, childNode, Depth + 1);
	}
}
что еще запостить?
Простой вопрос по VS12 фев. 200511:43#6
Daevaorn
>внутри iostream инклюдится iostream.h, но уже в обертке namespace std{}
ничего не инклюдиться это файл устарел... iostream - сам существует и работает без iostream.h.Можешь по поиску проверить
#include <iostream.h> такая строка отсутствует во всех файлах пространства имен std.
Проблемы с отрисовкой узлов Octree-дерева12 фев. 200511:16#6
Vulture
>А если например, в узле всего два объекта по разным углам (или больше объектов но собрались в двух точках), зачем на восемь когда надо всего два.
Впринципе это правильно,но пока  я хочу разобраться с общим случаем, потом естественно со всеми частными.
All
есть еще идеи ? ломаю голову се никак не могу найти причину.Уже все адреса узлов при отладке записывал.Они все создаются правильно и при отрисовке все адреса просматриваютяс...
Помогите пожалуйста
Проблемы с отрисовкой узлов Octree-дерева10 фев. 200516:36#4
White Wolf
>1. Две проверки на попдание во фрустум( в начале метода и перед его вызовом )
я тогда так понимаю:
//отображение дерева
void Octree::Draw(vector<Vector3D>& verticles, OctreeNode *&node, const Frustum& frustum)
{
  if (!frustum.BoundingBoxInFrustum(node -> GetBoundingBox()))
    return;
  //отображение Bounding Box'а для отладки
  node -> DrawBoundingBox();
  register int i;
  //дочерний узел
  OctreeNode *childNode;
  //Если нет дочерних узлов
  if (!node -> IsChild())
    return;
  for (i = 0; i < 8; i++) {
    //получить дочерний узел
    childNode = node -> GetChildNode(i);
      //рекурсивное отображение остальных узлов
      Draw(verticles, childNode, frustum);
  }
}
>2. Разве обязательно у узла есть 8 детей???
что-тоя не понял... У меня всегда узел на 8 одинаковых бьется...
что еще можешь сказать?
Проблемы с отрисовкой узлов Octree-дерева9 фев. 200518:05#1
Ни кто не может ничего сказать?
Проблемы с отрисовкой узлов Octree-дерева9 фев. 200516:54#0
Привет всем!!!!
Наконец-я сделал Octree.Разбивается всеправильно на Bounding Box'ы.Пока геометрию не вывожу, для отладки вывожу box'ы узла.Но почему-то 1 box из узлов дерева выводиться не полностью вот проблема на картинке:
вот тут все ок
Изображение удалено
а вот тут видно что не все box'ы (естественно и узлы не выводяться)
Изображение удалено
вот код отображения дерева:
//отображение дерева
void Octree::Draw(vector<Vector3D>& verticles, OctreeNode *&node, const Frustum& frustum)
{
	if (!frustum.BoundingBoxInFrustum(node -> GetBoundingBox()))
		return;
	//отображение Bounding Box'а для отладки
	node -> DrawBoundingBox();
	register int i;
	//дочерний узел
	OctreeNode *childNode;
	//Если нет дочерних узлов
	if (!node -> IsChild())
		return;
	for (i = 0; i < 8; i++) {
		//получить дочерний узел
		childNode = node -> GetChildNode(i);
		//проверка нахождения в пирамиде видимости
		if (frustum.BoundingBoxInFrustum(childNode -> GetBoundingBox()))
			//рекурсивное отображение остальных узлов
			Draw(verticles, childNode, frustum);
	}
}

Под скажите что нитак?
Заранее всем спасибо с уважением Андрей.

Что вы на это скажите(статья про язык С++)9 фев. 200516:08#122
[all]
Автор еще на STL наезжает :))
посмотрите что в конце статьи.
Что вы на это скажите(статья про язык С++)4 фев. 200511:41#56
Feanor
Да кстати что насчет больших проектов и программирования на языке C ?
Что вы на это скажите(статья про язык С++)3 фев. 200517:07#51
new
>Про "упала через неделю работы" - при чем тут ваще менеджер памяти?
Цитата из статьи:

Мне как-то пришлось искать почему программа, написанная аспирантом ф-та ВМиК МГУ падает через пару недель работы (она должна была работать месяцами). Именно по этой самой причине - копирование и уничтожение объектов при хранении объектов в контейнерных классах.

Вот про это имеется ввиду...
Что вы на это скажите(статья про язык С++)3 фев. 200516:32#46
LFlip
>C++ изобилует скрытыми ловушками и имеет ряд неоспоримых недостатков
В таком случае без этого это был-бы Object Pascal(Delphi) или Visual Basic там нету ловушек :)))))
>Мне вот например просто жутко не нравится формат команд проца от Intel(x86),
ну тогда программируй Z-Specturm или x51 (Atmel Signal и т.д.) :))))
new
>> судя по статье он хочет чтобы всё за него делал компилятор....
>И в этом он прав.
Нет не прав, для качественного кода нужно что-то сделать руками.Для больших проектов писать собственные менеджеры памяти к примеру, что-бы как автор сказал, программа не упала через неделю работы.В противном случае смотреть в сторону Object Pascal(Delphi), Visual Basic и т.д.  там компилятор точно делет все.
0xFFFFFFFF
>Я понял!!! То что хочет автор статьи уже есть!!! И называется оно VISUAL BASIC!!!
:))))))))
winter
>Да ну ;) Ставим на компьютер C++Builder, делаем те же действия не с использованием MFC, а с использованием VCL. Не видим >никаких макросов, вообще никакого уродства. Если у Microsoft кривые руки, то при чем тут Страуструп и его язык?
И получаем большие тормоза и глюки :)))
Что вы на это скажите(статья про язык С++)3 фев. 200514:03#15
new
>КГ/АМ
Это как понимать:)))
Что вы на это скажите(статья про язык С++)3 фев. 200512:21#9
Ясно спасибо за отзывы Я примерно таких результатов и ждал...
А что aruslan скажет?
Что вы на это скажите(статья про язык С++)3 фев. 200510:09#1
Кстати особое желание услышать мнение aruslan'на

Что вы на это скажите(статья про язык С++)3 фев. 200510:06#0
Привет всем вот прочитал статью про Один из лучших языков программирования C++, с чем я полностью согласен,
и очень удивился что автор его не любит.Конечно отчасти он прав что языек сложен, при программировании нетривиальных задач,что нужно следить за очень скрытыми ошибками, но почему там есть такая цитата
Одна из причин отказа от С++ как раз и заключается в его жесткости, которая, как тогда надеялись, позволит бороться с ошибками. И здесь, по мнению автора тестирование оказывается гораздо выгоднее.
Что имеется ввиду?
Прошу высказать свое мнение о статье.
ссылка на статью:http://www.steps3d.narod.ru/tutorials/c-minus-minus.html
Как в std::string сделать Lower или Upper?2 фев. 200512:57#3
loha
>CharLower((char*)res.c_str()); //просьба не бить ногами:)
Ладно живи :))) я тоже так делал...

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр