|
3D-программирование Вопросы, касающиеся программирования 3D мира |
23.05.2009, 02:49
|
#1
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Constructive solid geometry
имеется множество плоскостей, заданные позицией и нормалью.
как по ним построить меш??
мне известны формулы нахождения точки относительно плоскости и попадания луча по плоскости но все равно ни фига не могу придумать)
|
(Offline)
|
|
23.05.2009, 03:19
|
#2
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Constructive solid geometry
и необязательно использовать извращенские словечки если можно просто сказать "несколько","о которых известны: их место и перпендикуляр","3д-модель","я знаю" и тд.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
23.05.2009, 13:17
|
#3
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: Constructive solid geometry
Сообщение от Mr_F_
имеется множество плоскостей, заданные позицией и нормалью.
как по ним построить меш??
мне известны формулы нахождения точки относительно плоскости и попадания луча по плоскости но все равно ни фига не могу придумать)
|
здравый смысл подсказывает, что может получиться не mesh, а triangle soup в лучшем случае, или вобще противоречивый результат, который не имеет смысла.
очевидно, плоскость разбивает пространство на два полупространства.
симплекс в трехмерном пространстве - тетраэдр (4 вершины, 4 грани, 6 ребер).
минимальные входные данные - 4 плоскости. и то не факт, что они дадут замкнутую фигуру.
вообще CSG - это немного не про то. это когда мы применяем булевы операции (and, or , xor) к уже готовым примитивам. можно хранить в виде дерева, где узлы - операции, листья - примитивы. обходим дерево - получаем результат.
вобще тема довольно интересная, на КРИ был доклад харьковчан из ActionForms (Chasm, Вивисектор).
|
(Offline)
|
|
23.05.2009, 14:14
|
#4
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Constructive solid geometry
"несколько","о которых известны: их место и перпендикуляр","3д-модель","я знаю" и тд.
|
фейл) перпендикуляр менее программерски звучит чем нормаль)
а 3д модель не синоним меша)
"я знаю" вообще ни к чему)
здравый смысл подсказывает, что может получиться не mesh, а triangle soup в лучшем случае
|
это в худшем. понятное дело что должна присутствовать логика в построение трианглов.
вообще CSG - это немного не про то. это когда мы применяем булевы операции (and, or , xor) к уже готовым примитивам. можно хранить в виде дерева, где узлы - операции, листья - примитивы. обходим дерево - получаем результат.
|
но рендерить то эти примитивы тоже необходимо.
я просто с начала читал вот это:
www.leadwerks.com/files/csg.pdf
а там про булеаны ничего не написано (или мало написано не помню уже).
потом я смотрел формат файлов хаммера а там именно все солиды описываются плоскостями коих неограниченное кол-во.
|
(Offline)
|
|
23.05.2009, 15:13
|
#5
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: Constructive solid geometry
Сообщение от Mr_F_
но рендерить то эти примитивы тоже необходимо.
|
так а что мешает?
в ранних демках OpenGL я давно видел примеры CSG с помощью skissor-test или stensil даже использовался.
но лучше конечно написать функции: объединения, пересечения и разности мешей.
подозреваю, что меши лучше хранить в editor-friendly формате, т.е. с adjacency, нормалями, ребрами. определить операции split/merge. и т.д. и т.п.
Сообщение от Mr_F_
|
невнятный пейпер.
даже тут лучше написано: http://en.wikipedia.org/wiki/Constru...solid_geometry
|
(Offline)
|
|
23.05.2009, 16:08
|
#6
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Constructive solid geometry
решил найти точки пересечения плоскостей, отсеять те, который за пределами других и соединить.
для поиска точки пересечения нашёл такое:
http://algolist.manual.ru/maths/geom...ct/3planes.php
однако случилась проблема:
|
(Offline)
|
|
23.05.2009, 16:38
|
#7
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: Constructive solid geometry
Сообщение от Mr_F_
|
что такое p, d1, d2, d3 в твоей задаче?
|
(Offline)
|
|
23.05.2009, 16:52
|
#8
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Constructive solid geometry
p точка на плоскости, как бы середина фейса.
d описаны по ссылке:
N1 . p = d1
N2 . p = d2
N3 . p = d3
т.е. нормаль умноженный на коорды
|
(Offline)
|
|
23.05.2009, 17:10
|
#9
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: Constructive solid geometry
так что она общая для трех плоскостей получается? тогда это и есть пересечение.
наверное корректнее было бы записать: p1, p2, p3, т.е. для каждой плоскости своя.
|
(Offline)
|
|
23.05.2009, 18:35
|
#10
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Constructive solid geometry
да корявая какая-то формула
|
(Offline)
|
|
23.05.2009, 21:14
|
#11
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Constructive solid geometry
Mr_F_
не пытайтесь выдать свой субъективизм за ИстинноВерныйПрограммерскийСленг:
во-первых его не существует,
во-вторых уж не вам его устанавливать
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
24.05.2009, 13:47
|
#12
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Constructive solid geometry
самое нормальное что получилось, когда я добыл на блицбасик форуме функцию разрезания меша плоскостью, сделанную Лидверксом и создавал меши описанные плоскостями путём разрезания ими куба
НО
функция весьма какая-то стрёмная, есть резать уже ранее отрезаный объект то всё глюки начинаются, треугольники пропадают
плюс ну очень кривая сетка
функция:
http://www.blitzbasic.com/Community/...hp?topic=35294
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:43.
|