Название: Виртуальные объекты Отправлено: Igors от Сентябрь 03, 2019, 12:48 Добрый день
Очередная попытка поговорить об "архитектуре", вероятность плодотворного обсуждения мала, но все же не ноль, попробуем :) "Хотелка" показана в аттаче. Это простой плагин который создает стандартные формы, и у него есть интересные опции: в каждом вертексе создать сферу и/или каждое ребро заменить на цилиндр. Ни на какую архитектуру плагин не претендует, он тупенько льет доп примитивы в геометрию, напр если увеличить деталировку исходного кубика, то быстро получим мульены вертексов и фейсов за счет сфер и цилиндров. Также опции этих дополнений сжирают добрую половину UI плагина (а какой тип/размер/цвет сферы? и.т.п.). И вообще, а почему только сфера? А слабО кубик или ваще произвольный объект? Очевидно идейно/концептуально было бы использовать ссылку на единичный размножаемый объект(ы). Также очевидно что вместо тупенькой генерации N сфер гораздо лучше было бы рисовать одну сферу N раз. Короче, "даешь виртуальные объекты!". Ладно, попытаемся формализоваться Виртуальный объект (ВО) ссылается на оригинал, собственного UI не имеет. "Какие-то" параметры ВО котролируются/задаются создателем (ну хотя бы позиция). Однако ВО рисуется/рендерится так же как и реальный объект. Плюс обязательная возможность экспорта - напр записать в файл все ВО как реальные. Обычно интересует большое число ВО, пяток-десяток юзер и копи-пастой сделает. Пока хватит. Какие примерные структуры данных Вы можете предложить для реализации ВО? Спасибо Название: Re: Виртуальные объекты Отправлено: ViTech от Сентябрь 04, 2019, 11:14 Код
Название: Re: Виртуальные объекты Отправлено: Igors от Сентябрь 05, 2019, 07:01 Код
Код Заметим что ВО может ссылаться и на объект др типа, напр источник света, который не имеет ни геометрии ни материала, зато имеет массу др опций. Автоматычная расстановка большого числа лампочек - старая и популярная задача. Ну ладно, если все так, то первый вопрос - а что у нас с пресловутым "владением"? Кто ответит за создание, хранение и удаление ВО? Не так давно все уши с этим владением прожужжали. А когда его действительно надо обсуждать - молчок, да еще и вызывающий голый указатель.. Название: Re: Виртуальные объекты Отправлено: ViTech от Сентябрь 05, 2019, 13:40 Я это перепишу как я Вас понял, что не так - поправьте ... // "Виртуальный" объект = ссылка на реальный + что меняем // "диффы" як каже молодь ... Мой основной посыл был в использовании стилей (как, например, в текстовых процессорах). Если сейчас молодь называет стили "диффами", пусть будут диффы. Заметим что ВО может ссылаться и на объект др типа, напр источник света, который не имеет ни геометрии ни материала, зато имеет массу др опций. Автоматычная расстановка большого числа лампочек - старая и популярная задача. Ну ладно, если все так, то первый вопрос - а что у нас с пресловутым "владением"? Кто ответит за создание, хранение и удаление ВО? Полагаю, что за создание, хранение и удаление ВО должен ответить класс АвтоматычныйРасстановщикБольшогоЧислаЛампочек или его соратники. Не так давно все уши с этим владением прожужжали. А когда его действительно надо обсуждать - молчок, да еще и вызывающий голый указатель. Чтобы обсуждать, надо знать контекст (одно/многопоточность; гарантии существования стиля дольше, чем ВО; изменяемость/константность стиля и т.п.), а Вы этого не любите :). Потому и голый указатель, он всё стерпит, ему скрывать нечего, никого не ограничивает, всем всегда рад :). Название: Re: Виртуальные объекты Отправлено: Igors от Сентябрь 06, 2019, 07:50 Мой основной посыл был в использовании стилей (как, например, в текстовых процессорах). Если сейчас молодь называет стили "диффами", пусть будут диффы. Выходит я Вас не понял. Напрашивается вариант: ссылка на оригинал + что меняем (diiference). Термин "текстовый процессор" слышал давно, но ни с чем конкретным он не ассоциируется. Какие такие "стили"? Фонты, что ли? ???Полагаю, что за создание, хранение и удаление ВО должен ответить класс АвтоматычныйРасстановщикБольшогоЧислаЛампочек или его соратники. А что это за класс? Что он делает (ф-ционал)? Вообще Ваш подход к проектированию меня пугает. Типа - ну там, может, напишем какой-то класс...Чтобы обсуждать, надо знать контекст (одно/многопоточность; гарантии существования стиля дольше, чем ВО; изменяемость/константность стиля и т.п.), а Вы этого не любите Улыбающийся. Вы ввели какой-то свой термин "стиль" о котором я без понятия - и требуете для него контекст, та где ж я его возьму :)Название: Re: Виртуальные объекты Отправлено: ViTech от Сентябрь 06, 2019, 10:42 Выходит я Вас не понял. Напрашивается вариант: ссылка на оригинал + что меняем (diiference). Термин "текстовый процессор" слышал давно, но ни с чем конкретным он не ассоциируется. Какие такие "стили"? Фонты, что ли? ??? Термин "текстовый процессор" можно ассоциировать с Microsoft Word или LibreOffice Writer, например. Более полный список можно посмотреть тут (https://en.wikipedia.org/wiki/List_of_word_processors). В текстовых процессорах стили используются для определения свойств абзацев, списков и т.п. Чем отличается выбор фигуры для индикации вершины графической модели от выбора маркера для пункта маркированного списка в тексте? Как по мне, так принцип один и тот же. А что это за класс? Что он делает (ф-ционал)? Вообще Ваш подход к проектированию меня пугает. Типа - ну там, может, напишем какой-то класс... Не бойтесь, я сто раз так делал :). Но Вы так делать не будете, так что это неважно. Вы ввели какой-то свой термин "стиль" о котором я без понятия - и требуете для него контекст, та где ж я его возьму :) Другого я и не ожидал. Поэтому и оставил вызывающий голый указатель :). Название: Re: Виртуальные объекты Отправлено: Igors от Сентябрь 07, 2019, 17:33 В текстовых процессорах стили используются для определения свойств абзацев, списков и т.п. Чем отличается выбор фигуры для индикации вершины графической модели от выбора маркера для пункта маркированного списка в тексте? Как по мне, так принцип один и тот же. Правду сказать, не вижу тут никакой связи или аналогии. Выбор объекта-ссылки - не проблема, т.к. это реальный объект сцены, он отображается в окнах и предъявляется в списке объектов. Юзер всегда хорошо знает свою сцену - ведь он ее сам создавал.Другое дело где (или как) выбранный объект-ссылка будет размножаться? Вот юзер открыл UI нового класса что Вы предложили, выбрал ссылку (обязон) и... какой рез-т ожидается? Название: Re: Виртуальные объекты Отправлено: ViTech от Сентябрь 09, 2019, 10:07 Другое дело где (или как) выбранный объект-ссылка будет размножаться? Вот юзер открыл UI нового класса что Вы предложили, выбрал ссылку (обязон) и... какой рез-т ожидается? "Хотелка" показана в аттаче. Это простой плагин который создает стандартные формы, и у него есть интересные опции: в каждом вертексе создать сферу и/или каждое ребро заменить на цилиндр. Ни на какую архитектуру плагин не претендует, он тупенько льет доп примитивы в геометрию, напр если увеличить деталировку исходного кубика, то быстро получим мульены вертексов и фейсов за счет сфер и цилиндров. Также опции этих дополнений сжирают добрую половину UI плагина (а какой тип/размер/цвет сферы? и.т.п.). И вообще, а почему только сфера? А слабО кубик или ваще произвольный объект? ... Виртуальный объект (ВО) ссылается на оригинал, собственного UI не имеет. "Какие-то" параметры ВО котролируются/задаются создателем (ну хотя бы позиция). Однако ВО рисуется/рендерится так же как и реальный объект. Плюс обязательная возможность экспорта - напр записать в файл все ВО как реальные. Обычно интересует большое число ВО, пяток-десяток юзер и копи-пастой сделает. Эти шарики и трубочки вообще зачем нужны? После того, как плагин нагенерил их, что пользователь может с ними делать? Если изменится геометрия исходной модели (кубика), что с этими шариками должно происходить? Название: Re: Виртуальные объекты Отправлено: Igors от Сентябрь 10, 2019, 13:03 Эти шарики и трубочки вообще зачем нужны? Ну да, даЦитировать А ты все со своим "3D"... Да, ну красивая картинка, но какая от нее польза? Ты бы лучше "кадрами" занялся, ну или бухгалтерией... За истекшие четверть века в принципе ничего не изменилось, рассуждения бухгалтерской тетки столь же популярны :)После того, как плагин нагенерил их, что пользователь может с ними делать? Если изменится геометрия исходной модели (кубика), что с этими шариками должно происходить? Плагину задается тип стандартной модели (их десятка два) и опции, по меньшей мере размеры и resolution (сколько полигонов). Плагин тупо ставит сферы в вертексы и цилиндры в ребра. Собсные полигоны модели могут быть выключены, останется лишь "стилизованная решетка" (аттач).Выход плагина может подвергаться различным преобразованиям, напр его можно всяко деформировать, напр гнуть. При этом "шарики и трубочки" будут также гнуться, т.к. они - часть модели. Это может быть желательно или нет. Ну вот, опять все свалилось в "наводящие" :'( Название: Re: Виртуальные объекты Отправлено: ViTech от Сентябрь 10, 2019, 13:36 Плагину задается тип стандартной модели (их десятка два) и опции, по меньшей мере размеры и resolution (сколько полигонов). Плагин тупо ставит сферы в вертексы и цилиндры в ребра. Собсные полигоны модели могут быть выключены, останется лишь "стилизованная решетка" (аттач). Значить "стиль" всё таки присутствует :). Также опции этих дополнений сжирают добрую половину UI плагина (а какой тип/размер/цвет сферы? и.т.п.). И вообще, а почему только сфера? А слабО кубик или ваще произвольный объект? Вот вместо этой кучи опций и предлагается пара кнопок выбора: для вершин использовать вон тот шарик (из сцены или ещё откуда), а для рёбер вот этот прутик. Выход плагина может подвергаться различным преобразованиям, напр его можно всяко деформировать, напр гнуть. При этом "шарики и трубочки" будут также гнуться, т.к. они - часть модели. Это может быть желательно или нет. Пользователь может взаимодействовать с отдельно взятым шариком? Или он может влиять на геометрию модели, а шарики должны подстраиваться под её изменения? Ну вот, опять все свалилось в "наводящие" :'( Ну почему же, в первом же ответе был предложен конкретный вариант. Но опять всё свалилось в то, что он Вам не подходит :). И почему так получается... Название: Re: Виртуальные объекты Отправлено: Igors от Сентябрь 10, 2019, 14:53 Вот вместо этой кучи опций и предлагается пара кнопок выбора: для вершин использовать вон тот шарик (из сцены или ещё откуда), а для рёбер вот этот прутик. А о каких вертексах и ребрах Вы говорите? Это плагин их имеет, потому что ему задается тип создаваемой стандартной модели. А класс-создатель что Вы (вяло) предложили - откуда он их возьмет?Пользователь может взаимодействовать с отдельно взятым шариком? Или он может влиять на геометрию модели, а шарики должны подстраиваться под её изменения? Это все входит в проектирование, готовых ответов нет.Ну почему же, в первом же ответе был предложен конкретный вариант. Но опять всё свалилось в то, что он Вам не подходит :). И почему так получается... Я знаю почему, типично "вересячья" техника- городится полный бред (вот типа "стилей"). Автор конечно возражает "да это ж бред" - возможно лучше этого не делать - городится еще бред, предыдущий пункт повторяется N раз в зависимости от энтузиазма обсуждающих - наступает фаза "справедливого возмущения". Типа "Вам уже предложили столько решений, а Вам все не так!". "Да ему никогда не угодишь" и.т.п. Так вот, есди нет ни мыслей ни интереса - идите кушайте свое std, не засоряйте эфир. Спасибо за понимание Название: Re: Виртуальные объекты Отправлено: ViTech от Сентябрь 10, 2019, 15:31 Мда уж...
Пожалуй, просто напомню основной вопрос из первого сообщения темы: Какие примерные структуры данных Вы можете предложить для реализации ВО? Я знаю почему, типично "вересячья" техника - городится полный бред (вот типа "стилей"). Автор конечно возражает "да это ж бред" - возможно лучше этого не делать - городится еще бред, предыдущий пункт повторяется N раз в зависимости от энтузиазма обсуждающих - наступает фаза "справедливого возмущения". Типа "Вам уже предложили столько решений, а Вам все не так!". "Да ему никогда не угодишь" и.т.п. Так вот, есди нет ни мыслей ни интереса - идите кушайте свое std, не засоряйте эфир. Спасибо за понимание Отличная речь, вероятность плодотворного обсуждения резко увеличилась :). Название: Re: Виртуальные объекты Отправлено: Igors от Сентябрь 10, 2019, 18:12 Отличная речь, вероятность плодотворного обсуждения резко увеличилась :). Ну она и так была близка к техническому нулю, так что я ничего не потерял :)Название: Re: Виртуальные объекты Отправлено: ViTech от Сентябрь 10, 2019, 19:10 Ну она и так была близка к техническому нулю, так что я ничего не потерял :) Ну почему же :). На этом уроке мы узнали, с чем можно ассоциировать термин "текстовый процессор", что такое "стили", что это не только фонты. Что можно упростить UI плагина. Правда, до архитектуры плагина вряд ли когда доберёмся. Он так и будет тупенько лить геометрию. Название: Re: Виртуальные объекты Отправлено: Igors от Январь 27, 2020, 11:27 Реализовал, и в последнее время много с этим работаю. Для интереса расскажу как у меня получилось.
Ну "новая сущность" (виртуальный объект ВО) неизбежна. И с ней (самой по себе) все ясно, эта структура уже мелькала выше Код Основной вопрос был - а как работать с ВО, напр как их рисовать в окнах если их "нет в сцене" как таковых. Я решил что создатель ВО их же и хранит, напр Код: class CEmitter { Код Использование связки shared+weak здесь необязательно, просто "в масть" Теперь как работает рисование. Оно получает на вход контейнер реальных объектов и ничего не знает о виртуальных. Поэтому сначала надо пробежаться по всем объектам, если среди них есть "генераторы ВО" то вылить ВО в мапу, напр Код: void MyWindow::DrawGeometry( const QVector<CSceneGeomObject *> & objects ) Вот собсно и все, ничего заумного в теме не было :) |