Найти поверхности16.02.2026, 11:25. Показов 3883. Ответов 52
Метки нет (Все метки)
Добрый день
Есть полигонная 3D модель, так называемый "меш". Требуется найти поверхности и присвоить каждой свой цвет (аттач) Спасибо
0
|
|
| 16.02.2026, 11:25 | |
|
Ответы с готовыми решениями:
52
Разработать программу «Площадь поверхности многогранника», позволяющую вычислять объем площади поверхности простейших многогранников;
Найти объем тела и площадь полной поверхности |
|
6316 / 3040 / 1054
Регистрация: 01.06.2021
Сообщений: 11,588
|
|||
| 17.02.2026, 23:10 | |||
|
Вот только я сомневаюсь, что чайник из этой темы (имею в виду приведенный выше obj-файл) действительно взят, например, из 3ds Max. Чайник из этой темы с артефактами и вообще моделирован коряво. Не думаю, что разработчики топового софта будут такой мусор делать. На мой взгляд, кто-то просто решил создать похожий чайник и получилось у него не очень. В 3ds Max этот чайник добавляется через Create → Geometry → Standard Primitives → Teapot. У меня нет данного редактора, чтобы точно ответить, он взят оттуда или нет? Или с какой версии 3ds Max он взят?
0
|
|||
|
Модератор
|
||
| 17.02.2026, 23:41 | ||
|
0
|
||
|
6316 / 3040 / 1054
Регистрация: 01.06.2021
Сообщений: 11,588
|
||||
| 18.02.2026, 00:12 | ||||
|
Я сейчас скачал другой obj, перейдя по ссылке https://www.cs.utah.edu/~natev... teaset.zip, которую нашел в статье Википедии Utah teapot в разделе OBJ conversion, и оказалось, что там этого артефакта нет. Эта ссылка университета Юты, т.е. родины чайника. Однако, стекло это тоже материал и тестировать стекло на таком чайнике это грех. Для стекла нужно, чтобы чайник имел толщину (т.е. чтобы не состоял из одной поверхности). Это нужно, чтобы нормали были снаружи, как с внешней стороны чайника, так и когда будем смотреть внутрь. Вот одна из моих ранних работ - моделировал, когда был еще совсем новичком в 3D и рендер там не конца выполнен, поэтому качество низкое. Но даже тогда я понимал, как моделировать правильно для последующей работы со стеклом. Это выполнено на очень старой версии Blender, еще до выхода физически корректного Cycles и не используется HDRI окружение, только источник света, поэтому там нет реализма... Хотя, я даже учитывал поверхностное натяжение жидкости при моделировании ее верхней поверхности. Столько же Maya.у меня от Autodesk только бесплатный Fusion установлен а вот Blender меня полностью устраивает и постепенно он становится все круче и круче. Сейчас вышла 5-версия, там процедурку еще улучшили, скоро порвет даже C4D, которая всегда считалась эталоном моушна из-за крутизны MoGraph. Blender сейчас очень активно используется в гейдеве для UE и Unity. В нем можно сделать почти все, что нужно для разработки игр, кроме тех вещей, которые делает Substance Painter. Даже ZBrush не нужен, поскольку в Blender скульптинг круче, чем в C4D, 3ds Max, Maya, уступает, конечно, ZBrush, но обычно недостатки не чувствуются. Так сказать это универсальная прога. Во многих туториалах по созданию игр используется Blender.
0
|
||||
| 18.02.2026, 01:50 [ТС] | ||||||||||||||||||
|
{0, 1, 2, 3} {2, 1, 0, 3} Это что? И будет ли Ваш алгоритм работать для такой модели? (нет). Далее. А если ребро (2 вертекса) шарится 3-мя или более фейсами? Это называется всяко-разно, напр "non-manifold mesh", но суть одна: однозначного решения нет, различные фичи могут работать, но могут и нет, как получится. Также не вижу Ваших предложений: какие еще есть способы выделения/нахождения поверхностей? Сейчас у простого куба найдется 6 поверхностей, он ведь имеет свои вертексы (и значит свои ребра) для каждой грани (всего 24 вертекса). Это может показаться странным, но выгоды весомее, напр у цилиндра с крышками находятся 3 поверхности (верхняя крышка, нижняя и середка), что обычно и нужно. Но в любом случае: как еще можно выделять поверхности? А если мыслей нет, то давайте честно признаем: проблемы "что считать поверхностью" не существует
0
|
||||||||||||||||||
|
787 / 308 / 17
Регистрация: 21.01.2023
Сообщений: 531
|
|||||
| 18.02.2026, 08:53 | |||||
|
Как обычно, вопрос - подскажите, как сделать то, не знаю что.
Аналогично с ручкой на крышке - на картинке она закрашена одним цветом с крышкой, но с чего автор взял, что это интуитивно? По мне, так эта ручка - отдельная запчасть. То есть на первый вопрос ответ: эти отдельные части явно или неявно создаются при создании моделей. Вот это:
Получается, что на этот вопрос нет ответа потому, что нет явного вопроса. Можно попробовать включить воображение: "По каким признакам я, глядя на модель, делю её на части?" Но ответ на этот вопрос не уложится в несколько десятков строк на C++, это достойно ИИ, который просто "научится" на миллионах моделей, и при этом всё равно будет иногда ошибаться.
0
|
|||||
|
99 / 74 / 28
Регистрация: 30.03.2023
Сообщений: 206
|
|||||||||
| 18.02.2026, 09:58 | |||||||||
0
|
|||||||||
|
6316 / 3040 / 1054
Регистрация: 01.06.2021
Сообщений: 11,588
|
|||
| 18.02.2026, 14:22 | |||
|
Но вот, допустим, что чайник cмоделирован таким образом, что все части соединены друг с другом. Кстати, нормальные люди именно так и моделируют. Даже если они создают части из новых примитивов, то все равно в конце они соединяют все части. Ну и как в таком случае алгоритм может понять, как правильно разделить меш на части? Никак. Ну разве что нужно написать приложение, использующее ИИ, которое анализирует меш в целом и потом как-то пытается отделить на части. Именно поэтому, я писал, что нельзя написать код, который будут работать для всех случаев. alecss131 тоже правильно сказал, что это задача для 3d редактора, а не С++. Т.е. даже если части модельки будут связаны друг с другом, в 3d редакторах есть много продвинутых функций для удобного выделения частей. Некоторые даже определяют части автоматически, но все же человек должен проконтролировать процесс, поскольку очень часто эти инструменты могут выделить не полностью или наоборот охватить что-то лишнее.
0
|
|||
|
787 / 308 / 17
Регистрация: 21.01.2023
Сообщений: 531
|
||
| 18.02.2026, 16:06 | ||
|
0
|
||
|
6316 / 3040 / 1054
Регистрация: 01.06.2021
Сообщений: 11,588
|
||
| 18.02.2026, 16:54 | ||
|
я имел в виду, что меш может быть создан, например, из двух отдельных примитивов (две сферы), но потом они были соединены. Т.е. у сфер теперь есть 8 общих вершин. Я включил прозрачность на второй картинке, чтобы ты представил, как оно выглядит. На месте стыка получается отверстие. Вот тут, в отличие от чайника из этой темы, где отдельные части не соединяются друг с другом, если попробуешь выделить в Blender посредством Ctrl+L (Select Linked), то выделится всё, а не одна сфера, поскольку алгоритм уже не может понять, как нужно отделить. Конечно, в Blender есть и другие методы для быстрого выделения только одной сферы (например, в виде сбоку можно просто выделить прямоугольником), но все же, код из этой темы, который ищет "Sharp edges - эйджи, через который проходит только 1 фейс" работать не будет. *** Т.е. невозможно написать код, который сможет разделять меш на части во всех случаях. Код можно написать только для самых банальных или конкретных случаев. Соответственно, нет смысла заниматься бесполезным программированием, а нужно просто использовать 3d редакторы.
0
|
||
|
787 / 308 / 17
Регистрация: 21.01.2023
Сообщений: 531
|
||
| 18.02.2026, 17:07 | ||
|
0
|
||
|
6316 / 3040 / 1054
Регистрация: 01.06.2021
Сообщений: 11,588
|
||||
| 18.02.2026, 17:12 | ||||
|
Конечно, конкретно для этого меша ты можешь написать лисапедный код, заранее зная для какого меша ты пишешь и какие части именно нужно отделить, но универсальный код ты не напишешь. Получится так, что для 1000 разных мешей тебе придется написать 1000 кодов)))
0
|
||||
|
787 / 308 / 17
Регистрация: 21.01.2023
Сообщений: 531
|
||
| 18.02.2026, 17:24 | ||
|
Royal_X, да, я присмотрелся - сфера не сглаженная, тут каждый 4-угольный фейс имеет свою нормаль, по моему методу тут будет разделение на сотни частей (как куб на шесть).
0
|
||
|
6316 / 3040 / 1054
Регистрация: 01.06.2021
Сообщений: 11,588
|
||
| 18.02.2026, 17:59 | ||
|
Даже если при экспорте произойдет триангуляция, каждый прямоугольник поделится на два треугольника, то на количество вершин и на то, что они уже соединены, это никак не повлияет. Части соединены навсегда, и сейчас это как цельный меш. Добавлено через 28 минут Mikle Quits, для лучшего понимания, почему задача ТС бесполезна для общего случая, могу привести такой пример: Допустим некто говорит - отделить "56, 72" на два числа. Конечно, ты без проблем это сделаешь. Ты это сделаешь и когда будет "56 72". Одним словом, запятая или пробел, или другой разделитель помогают разделить на два числа. Но если я тебе дам "5672", то ты сможешь разделить только в случае, если я тебе дам подсказку, что числа двузначные. Однако, если я тебе буду давать "4596", "2198" и пр. без всяких подсказок, то ты никак не разделишь на два числа, поскольку 4596 можно разделить на два числа неоднозначно. То же самое с мешами. Если части отделены физически, то ты без проблем напишешь код. Но когда там цельный меш, то ничем программа не поможет в общем случае. Для конкретного случая, конечно, можно написать велосипед. Но вот написать универсальный код, который будет что-то отделять у цельных мешей (когда мы не знаем, как они вообще выглядят), невозможно.
0
|
||
| 18.02.2026, 19:25 [ТС] | ||||||
Но ведь чайник стартового поста он раскрасил, да и ясно говорил что интересует код на плюсах для любой модели. И, надеюсь, у всех достаточно опыта чтобы понимать: всегда можно дать такую модель что любой алгоритм не сработает. Это справедливо для любого тулза, сверхзадач никто не ставит.В данном случае "содержательная часть" формулируется просто
0
|
||||||
|
787 / 308 / 17
Регистрация: 21.01.2023
Сообщений: 531
|
|||
| 18.02.2026, 19:54 | |||
|
Простой пример - если в D3DX сгенерировать куб (командой D3DX->CreateBox()), то в нём будет не 8, а 24 вертекса. Это потому, что нормали сторон на месте стыка разные. А вот у чайника фейсы стыкуются плавно, без видимого перехода, там соседние фейсы используют один и тот же вертекс.
0
|
|||
|
6316 / 3040 / 1054
Регистрация: 01.06.2021
Сообщений: 11,588
|
||
| 18.02.2026, 20:06 | ||
|
Я же всё прекрасно вижу в редакторе, и сколько у меня вершин (в редакторе показывается статистика) и в какую сторону нормали. Зачем мне эти сомнительные методы Ванги. У нетронутой сферы у меня 482 вертекса / 512 фейсов / 992 ребр. А у этого меша (созданного из двух приклеенных сфер) 954 вертекса / 1968 ребр / 1016 фейсов. У сферы без четырех фейсов 481 вертекс, 988 ребр, 508 фейсов. Не нужно быть математиком, чтобы понять, что вертексы общие (481 * 2 = 962 ≠ 954) Так что, я еще раз повторяю, что вертексы общие. И нормали тоже не отличаются. Стык ничем не отличается от остальных ребр, так что ни одна программа не сможет определить такой стык. Конкретно для данного случая, конечно, можно написать код, которые сможет определить стык, например, сравнивая угол между фейсами. Однако, приведенный объект только для примера, который показывает, что можно соединить два примитива или куска в один меш таким образом, что подход с "Sharp Edges", упомянутый в данной теме, работать не будет. То есть, достаточно, как я поменяю меш, как код снова не будет работать. К тому же, написание кодов для каждого конкретного случай (меша) это идиотизм. Вот, и говорю, что такими темпами для 1000 мешей нужно написать 1000 кодов)))
0
|
||
|
787 / 308 / 17
Регистрация: 21.01.2023
Сообщений: 531
|
||||
| 18.02.2026, 21:17 | ||||
|
0
|
||||
|
6316 / 3040 / 1054
Регистрация: 01.06.2021
Сообщений: 11,588
|
|||
| 18.02.2026, 21:42 | |||
|
Вот, я даже включил показ нормалей вертексов, у всех нормали выходят наружу, в том числе, у вертексов на месте стыка.
0
|
|||
|
787 / 308 / 17
Регистрация: 21.01.2023
Сообщений: 531
|
||
| 18.02.2026, 22:37 | ||
|
Royal_X, при таком расположении нормалей на границе сфер при освещении будет градиент вместо резкого перехода.
Можно мне эту модель? Я её отрендерю видеокартой и пришлю результат. Можно даже проще - не эту модель, а сгенерировать в редакторе куб с нормалями, обычный, без фасок и т. п. Потом посчитать вертексы. Редактор может и напишет, что их 8, но я 100% уверен, что в вертексном буфере в файле модели их будет уже 24, либо на кубе не будет работать освещение.
0
|
||
|
6316 / 3040 / 1054
Регистрация: 01.06.2021
Сообщений: 11,588
|
|||
| 18.02.2026, 22:57 | |||
|
Это не представление в редакторе, а это общепринятое представление, которое существует для полигональных сеток (мешей). Это представление никак не привязано к моему редактору. Я вот могу сохранить файл в obj или в любом другом формате и кто-нибудь другой его может открыть в другом 3d редакторе, или использовать меш в редакторе игрового движка и т.д. Но от этого ничего не поменяется. Количество вертексов и их нормали не поменяются. Именно это представление используется повсюду в 3d при работе с мешами. А вот то, как оно представлено на уровне видеокарты - это уже не волнует людей, которые работают с мешами (3d моделлеры, геймдевы, аниматоры). Я все прекрасно понимаю, что на уровне видеокарты будут всякие вершинные, индексные буферы, мешлеты и прочее. Конечно, понятия вершины, нормали используются и в контексте представления на уровне видеокарты. Это все прекрасно, но какое оно вообще имеет отношение к теме? Я тебе говорю, что там у моего меша общие вертексы, а ты мне говоришь, что на уровне видеокарты там иначе. Ну и что с того? А на еще более низком уровне там нули и единицы. Представляешь, там на месте стыка не вертексы, а нули и единицы
0
|
|||
| 18.02.2026, 22:57 | |
|
Найти площадь боковой поверхности куба и его объем
Дан объем куба. Найти площадь его поверхности Найти объем тела V и площадь полной поверхности S паралелепипеда Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|