forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Constructive solid geometry (http://forum.boolean.name/showthread.php?t=8359)

Mr_F_ 23.05.2009 02:49

Constructive solid geometry
 
имеется множество плоскостей, заданные позицией и нормалью.

как по ним построить меш??
мне известны формулы нахождения точки относительно плоскости и попадания луча по плоскости но все равно ни фига не могу придумать)

impersonalis 23.05.2009 03:19

Ответ: Constructive solid geometry
 
и необязательно использовать извращенские словечки если можно просто сказать "несколько","о которых известны: их место и перпендикуляр","3д-модель","я знаю" и тд.

ffinder 23.05.2009 13:17

Ответ: Constructive solid geometry
 
Цитата:

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

здравый смысл подсказывает, что может получиться не mesh, а triangle soup в лучшем случае, или вобще противоречивый результат, который не имеет смысла.

очевидно, плоскость разбивает пространство на два полупространства.
симплекс в трехмерном пространстве - тетраэдр (4 вершины, 4 грани, 6 ребер).
минимальные входные данные - 4 плоскости. и то не факт, что они дадут замкнутую фигуру.

вообще CSG - это немного не про то. это когда мы применяем булевы операции (and, or , xor) к уже готовым примитивам. можно хранить в виде дерева, где узлы - операции, листья - примитивы. обходим дерево - получаем результат.
вобще тема довольно интересная, на КРИ был доклад харьковчан из ActionForms (Chasm, Вивисектор).

Mr_F_ 23.05.2009 14:14

Ответ: Constructive solid geometry
 
Цитата:

"несколько","о которых известны: их место и перпендикуляр","3д-модель","я знаю" и тд.
фейл) перпендикуляр менее программерски звучит чем нормаль)
а 3д модель не синоним меша)
"я знаю" вообще ни к чему)
Цитата:

здравый смысл подсказывает, что может получиться не mesh, а triangle soup в лучшем случае
это в худшем. понятное дело что должна присутствовать логика в построение трианглов.
Цитата:

вообще CSG - это немного не про то. это когда мы применяем булевы операции (and, or , xor) к уже готовым примитивам. можно хранить в виде дерева, где узлы - операции, листья - примитивы. обходим дерево - получаем результат.
но рендерить то эти примитивы тоже необходимо.
я просто с начала читал вот это:
www.leadwerks.com/files/csg.pdf
а там про булеаны ничего не написано (или мало написано не помню уже).
потом я смотрел формат файлов хаммера а там именно все солиды описываются плоскостями коих неограниченное кол-во.

ffinder 23.05.2009 15:13

Ответ: Constructive solid geometry
 
Цитата:

Сообщение от Mr_F_ (Сообщение 105635)
но рендерить то эти примитивы тоже необходимо.

так а что мешает?
в ранних демках OpenGL я давно видел примеры CSG с помощью skissor-test или stensil даже использовался.
но лучше конечно написать функции: объединения, пересечения и разности мешей.
подозреваю, что меши лучше хранить в editor-friendly формате, т.е. с adjacency, нормалями, ребрами. определить операции split/merge. и т.д. и т.п.
Цитата:

Сообщение от Mr_F_ (Сообщение 105635)
я просто с начала читал вот это:www.leadwerks.com/files.csg.pdf

невнятный пейпер.
даже тут лучше написано: http://en.wikipedia.org/wiki/Constru...solid_geometry

Mr_F_ 23.05.2009 16:08

Ответ: Constructive solid geometry
 
решил найти точки пересечения плоскостей, отсеять те, который за пределами других и соединить.
для поиска точки пересечения нашёл такое:
http://algolist.manual.ru/maths/geom...ct/3planes.php

однако случилась проблема:

ffinder 23.05.2009 16:38

Ответ: Constructive solid geometry
 
Цитата:

Сообщение от Mr_F_ (Сообщение 105640)
решил найти точки пересечения плоскостей, отсеять те, который за пределами других и соединить.
для поиска точки пересечения нашёл такое:
http://algolist.manual.ru/maths/geom...ct/3planes.php

что такое p, d1, d2, d3 в твоей задаче?

Mr_F_ 23.05.2009 16:52

Ответ: Constructive solid geometry
 
p точка на плоскости, как бы середина фейса.
d описаны по ссылке:
N1 . p = d1
N2 . p = d2
N3 . p = d3

т.е. нормаль умноженный на коорды

ffinder 23.05.2009 17:10

Ответ: Constructive solid geometry
 
так что она общая для трех плоскостей получается? тогда это и есть пересечение.
наверное корректнее было бы записать: p1, p2, p3, т.е. для каждой плоскости своя.

Mr_F_ 23.05.2009 18:35

Ответ: Constructive solid geometry
 
да корявая какая-то формула

impersonalis 23.05.2009 21:14

Ответ: Constructive solid geometry
 
Mr_F_
не пытайтесь выдать свой субъективизм за ИстинноВерныйПрограммерскийСленг:
во-первых его не существует,
во-вторых уж не вам его устанавливать ;)

Mr_F_ 24.05.2009 13:47

Ответ: Constructive solid geometry
 
самое нормальное что получилось, когда я добыл на блицбасик форуме функцию разрезания меша плоскостью, сделанную Лидверксом и создавал меши описанные плоскостями путём разрезания ими куба

НО
функция весьма какая-то стрёмная, есть резать уже ранее отрезаный объект то всё глюки начинаются, треугольники пропадают

плюс ну очень кривая сетка

функция:
http://www.blitzbasic.com/Community/...hp?topic=35294


Часовой пояс GMT +4, время: 20:09.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot