3D Picture

Обсуждение вопросов, связанных с обработкой аудио и видео информации
Аватара пользователя
alerm

Activity
leader
leader
Сообщения: 682
Зарегистрирован: 02 май 2012, 21:28
Награды: 1
Версия LabVIEW: 20
Благодарил (а): 57 раз
Поблагодарили: 9 раз
Контактная информация:

3D Picture

Сообщение alerm »

Посмотрел портал, темы по 3D Picture есть, но всё вроде не то, если ошибся, то извиняюсь заранее.

Как я понял, то нельзя задать координаты объекту до цикла, если хочешь изменять угол объекта во время работы программы?
См. хелп (на рисунке), можно либо задать координату, а потом повернуть, либо повернуть, а затем сместить.
Снимок.JPG
Т.е. если ничего не менять во время работы (не угол, не координату), то можно вынести за цикл, иначе прописывай положение каждый раз?
На сколько ест ресурсов такая система? (я так и не понял, время цикла прыгает на 2 порядка)

Почему происходит неправильное отображение деталей (могут прыгнуть в условный центр или потерять угол), хотя не должно быть такого (см. рисунок), т.е. отрисовка происходит после всех операций с поворотами?
Снимок_.JPG
Снимок_.JPG (30.63 КБ) 11158 просмотров
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: 3D Picture

Сообщение Artem.spb »

по некоторым пунктам я не очень ясно понимаю вопрос, так что ответы могут быть "не в тему"
Как я понял, то нельзя задать координаты объекту до цикла, если хочешь изменять угол объекта во время работы программы?
почему нельзя? первая отрисовка в заданном месте, потом можно смещать
См. хелп (на рисунке), можно либо задать координату, а потом повернуть, либо повернуть, а затем сместить.
да, эта штука малость запутанная. потому как вращение после смещения происходит относительно начала координат и в первом случае деталь будет летать по кругу.
Т.е. если ничего не менять во время работы (не угол, не координату), то можно вынести за цикл, иначе прописывай положение каждый раз?
а как иначе? если координата меняется, то откуда система её узнает?
На сколько ест ресурсов такая система? (я так и не понял, время цикла прыгает на 2 порядка)
это очень сильно зависит от размера и качества деталей. в челом да, 3Д по моим экспериментам очень прожоорливая штука в :labview: но уменьшением размера деталей можно получить вполне нормальные скорости.
Почему происходит неправильное отображение деталей (могут прыгнуть в условный центр или потерять угол), хотя не должно быть такого (см. рисунок), т.е. отрисовка происходит после всех операций с поворотами?
Без картинки сложно сказать сто и почему происходит.
по поводу пропадания углов могу сказать, что тут опять размеры влияют. У меня были проблемы схожего характера, но форуме Ni мне рекомендовали уменьшить детали (zoom), всё стало гладко и красиво, а потом заказчик ещё и снизил качество моделей (детали загружаются из stl файлов), так картинка и двигаться адекватно стала (до этого как раз дико медленно рисовалось, хотя загрузка процессора была не максимальной)
Аватара пользователя
alerm

Activity
leader
leader
Сообщения: 682
Зарегистрирован: 02 май 2012, 21:28
Награды: 1
Версия LabVIEW: 20
Благодарил (а): 57 раз
Поблагодарили: 9 раз
Контактная информация:

Re: 3D Picture

Сообщение alerm »

Artem.spb, спасибо за заинтересованность!
почему нельзя? первая отрисовка в заданном месте, потом можно смещать
Задать то можно, но если этого не делать при каждой итерации в цикле, то:
1) при Relative?=true в блоке Rotate Y-axis.vi (просто пока только изменение в одной плоскости) деталь будет сходить с ума (крутиться);
2) при Relative?=false в блоке Rotate Y-axis.vi угол детали изменяется как надо, но деталь оказывается отвязана от общей системы координат и считает себя центром.
Как-то так.
Без картинки сложно сказать сто и почему происходит.
Под рукой нет, то могу сказать несколько особенностей: в программе идёт считывание данных с внешнего устройства, а на 3д отрисовываются как бы идеальный случай (он без проблем и косяков) и наш реальный (вот в нём бывают артефакты, когда детали прыгают в начало координат)
так картинка и двигаться адекватно стала (до этого как раз дико медленно рисовалось, хотя загрузка процессора была не максимальной)
Картинка отображается в реальном времени, процессор грузит процентов на 20 (точно не помню). Хотя стоит сказать, что там пока простейшие фигуры (по 2 цилиндра и шарика и один параллелепипед).
это очень сильно зависит от размера и качества деталей. в челом да, 3Д по моим экспериментам очень прожоорливая штука в :labview: но уменьшением размера деталей можно получить вполне нормальные скорости.
Спасибо за подсказку, попробую уменьшить всё в 10 раз, как писал выше, пока всё равно детали стандартные.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: 3D Picture

Сообщение dadreamer »

alerm писал(а):Задать то можно, но если этого не делать при каждой итерации в цикле, то:
1) при Relative?=true в блоке Rotate Y-axis.vi (просто пока только изменение в одной плоскости) деталь будет сходить с ума (крутиться);
2) при Relative?=false в блоке Rotate Y-axis.vi угол детали изменяется как надо, но деталь оказывается отвязана от общей системы координат и считает себя центром.
Как-то так.
Можете скинуть :vi: с подобным поведением (простую модель на картинках хотя бы)? Мне кажется, дело тут в правильном порядке геометрических преобразований (что за чем следует), ну и в корректности самих преобразований. Вот взять стандартный пример от NI C:\Program Files (x86)\National Instruments\LabVIEW 2015\examples\Graphics and Sound\3D Picture Control\3D Model of Solar System.vi. Там тоже вызывается Translate Object + Rotate X (Y) Axis, причём везде Relative?=True. Но ведь работает.
alerm писал(а):Картинка отображается в реальном времени, процессор грузит процентов на 20 (точно не помню). Хотя стоит сказать, что там пока простейшие фигуры (по 2 цилиндра и шарика и один параллелепипед).
Модель солнечной системы грузит ЦП у меня в пределах 3-8%, обычно 5-6%. Время цикла там - 20 мс. Если в цикле нет никаких геометрических преобразований, то можно время цикла даже уменьшить - быстрее будет отрисовываться.
Artem.spb писал(а):это очень сильно зависит от размера и качества деталей. в челом да, 3Д по моим экспериментам очень прожоорливая штука в :labview: но уменьшением размера деталей можно получить вполне нормальные скорости.
Зависит ещё от видеокарты (встроенная/внешняя) и поддержки OpenGL (software/hardware).
Аватара пользователя
alerm

Activity
leader
leader
Сообщения: 682
Зарегистрирован: 02 май 2012, 21:28
Награды: 1
Версия LabVIEW: 20
Благодарил (а): 57 раз
Поблагодарили: 9 раз
Контактная информация:

Re: 3D Picture

Сообщение alerm »

dadreamer, у меня модель солнечной системы что-то вообще не грузит процессор (25% при отсутствие задержки вообще). Но та программа работает только на ноуте (не новом), т.к. там нужен блютуз, а на компе я его так и не смог нормально запустить. Время цикла там 10 мс, но там идёт не только отображение 3д.
Могу скинуть совсем не ту программу, но принцип управления 3д такой же (правда тут все детали внесены в цикл, даже те, которые не меняют положения).
Untitled 1 (7).vi
прошу ссаными тряпками не кидаться
(310.66 КБ) 229 скачиваний
Зависит ещё от видеокарты (встроенная/внешняя) и поддержки OpenGL (software/hardware).
Может поэтому я не смог на рабочем компе добиться глюков?
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: 3D Picture

Сообщение dadreamer »

alerm писал(а):Может поэтому я не смог на рабочем компе добиться глюков?
Вряд ли здесь дело именно в видеокарте (в данном случае). Потому что у меня вот этот пример глючит на домашнем компе, хотя видяха у меня стоит довольно неплохая. Тип глюка - при нажатии ЛКМ на сцене верхняя часть "ноги" начинает отрисовываться под 180 градусов относительно нижней, и одновременно отрисовывается в текущем положении, т.е. кадры чередуются между собой. При отпускании ЛКМ всё становится нормально. Записал вот такую видео-демонстрашку:
capture-1.rar
глюки отрисовки
(752.4 КБ) 221 скачивание
Арифметику бегло посмотрел, вроде градусы получаются корректные при перемещении / нажатии кнопок мыши. ̶Т̶о̶ ̶е̶с̶т̶ь̶,̶ ̶б̶о̶л̶ь̶ш̶е̶ ̶с̶к̶л̶о̶н̶я̶ю̶с̶ь̶ ̶к̶ ̶т̶о̶м̶у̶,̶ ̶ч̶т̶о̶ ̶э̶т̶о̶ ̶б̶а̶г̶ ̶р̶е̶н̶д̶е̶р̶и̶н̶г̶а̶ ̶3̶D̶ ̶д̶в̶и̶ж̶к̶а̶.̶ Не знаю, поможет ли, но можете попробовать сделать всю работу с 3D Picture в одном цикле, как здесь сделано: https://decibel.ni.com/content/docs/DOC-4958
Последний раз редактировалось dadreamer 09 июл 2016, 13:30, всего редактировалось 1 раз.
Аватара пользователя
alerm

Activity
leader
leader
Сообщения: 682
Зарегистрирован: 02 май 2012, 21:28
Награды: 1
Версия LabVIEW: 20
Благодарил (а): 57 раз
Поблагодарили: 9 раз
Контактная информация:

Re: 3D Picture

Сообщение alerm »

dadreamer, в той программе в первом цикле приходят данные с прибора, при том там может приходить часть строки, так что там ещё слежение и допись предыдущей строки идёт, при необходимости (честно своровал здесь на портале, возможно у тебя :thank: :D ). Частота 100 Гц, так что цикл крутится раз в 10 мс. А 3д во втором параллельном цикле, так проще. Ни с последовательным портом, ни с 3д ранее дел не имел, так что косячу.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: 3D Picture

Сообщение dadreamer »

alerm, если убрать из цикла отрисовки :vi: для перемещения объекта, эти глюки исчезнут? Есть ли какие-то другие манипуляции, в процессе которых глюки исчезают? И я так понимаю, это только часть проблемы...
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: 3D Picture

Сообщение dadreamer »

alerm
Сейчас начал по одному отключать перемещения объектов на сцене. И увидел, что все объекты изначально в одной точке созданы, т.е. в геометрическом центре. На каждой итерации цикла мы очищаем матрицу преобразований (Clear Transformation) и объект перемещается обратно в центр. Думаю, из-за этого наложения одних объектов на другие и видим подобные "косяки". Попробуйте все объекты растащить по своим местам ДО цикла отрисовки. Вот пример из вышеприведённой ссылки:
Вложения
2016-07-07_21-54-08.jpg
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: 3D Picture

Сообщение Artem.spb »

dadreamer писал(а):alerm, если убрать из цикла отрисовки :vi: для перемещения объекта, эти глюки исчезнут?
я в целом тоже рекомендую упростить до состояния исчезновения или нахождения глюка, сейчас слишком много деталей.

Глюков со скачками сегмента я у себя не наблюдаю, но детали грубые, вот как раз такие же, как были у меня.
dadreamer писал(а):alerm
Сейчас начал по одному отключать перемещения объектов на сцене. И увидел, что все объекты изначально в одной точке созданы, т.е. в геометрическом центре. На каждой итерации цикла мы очищаем матрицу преобразований (Clear Transformation) и объект перемещается обратно в центр. Думаю, из-за этого наложения одних объектов на другие и видим подобные "косяки". Попробуйте все объекты растащить по своим местам ДО цикла отрисовки. Вот пример из вышеприведённой ссылки:
Не поможет. Для абсолютного перемещения объекта всё равно придётся очистить матрицу. Есть вариант относительного смещения, но тут могут быть сложности с не коммутативностью смещений (поворот+смещение ≠ смещение + поворот)
А вот вынести за цикл неподвижные объекты я бы рекомендовал. Незачем их каждый раз "двигать".
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: 3D Picture

Сообщение Artem.spb »

Ещё вопрос возник: зачем делать clear+translate, когда есть settranslation?
как минимум, меньше функций и проще диаграмма, а может быть и часть глюков уберёт.
Суть в том, что clear смещает деталь в начало координат, а потом она смещается относительно текущего положения.
Функция же settranslation сразу смещает деталь в указанное положение (относительно начала координат).
Флаг Relative функции вращения делает то же самое: вызывает одну из этих двух функций (абсолютное или относительное положение).

Но повторюсь: я у себя никаких багов-артефактов не наблюдаю, гну если не считать, что я не понимаю, что нужно делать :)
цветная нога вполне корректно двигается с движением мышки (в пределах разумного), никуда не скачет, детали не убегают.
Проверял на LV15, win7 64, ноут без навороченной видяхи.

Дополнение: только сейчас понял, зачем всё в цикле. Там разве что коленный сустав можно за цикл вынести, остальное же движется в зависимости от режима.
А вот параллельное добавление деталей в сцену меня смущает. я бы последовательно это сделал, причём реф на сцену как раз бы и передавал из функции в функцию. Кто его знает, как оно там внутри устроено. создаётся копия при ветвлении (как со всем остальными данными), или нет (как в вижине).
Аватара пользователя
alerm

Activity
leader
leader
Сообщения: 682
Зарегистрирован: 02 май 2012, 21:28
Награды: 1
Версия LabVIEW: 20
Благодарил (а): 57 раз
Поблагодарили: 9 раз
Контактная информация:

Re: 3D Picture

Сообщение alerm »

Artem.spb, деталь с settranslation либо крутится как ненормальная, либо вращается относительно своего центра (в зависимости от Relative?), по другому у меня не получилось(
По поводу параллельного добавления деталей в сцену: я пробовал и последовательно, разницы нет.
dadreamer, я тоже думаю, что глюки связаны с тем, что иногда детали не успевают перемещаться и отрисовываются в "очищеном" виде, т.е. в начале координат.
Artem.spb, попробую уменьшить размеры деталей и увеличить масштаб, но это только в следующую среду, не раньше, потом отпишусь, что из этого вышло.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: 3D Picture

Сообщение dadreamer »

Artem.spb писал(а):Но повторюсь: я у себя никаких багов-артефактов не наблюдаю, гну если не считать, что я не понимаю, что нужно делать :)
цветная нога вполне корректно двигается с движением мышки (в пределах разумного), никуда не скачет, детали не убегают.
Проверял на LV15, win7 64, ноут без навороченной видяхи.
А если ЛКМ на сцене зажать, не глючит?

Сейчас на виртуалке проверил. Там глючит даже без нажатия ЛКМ, видимо, виной тому совсем скудные параметры гостевой системы. Думаю, если достаточно быстро отрисовывает, то глюков не видно, а если не очень - то они и видны как раз. Можно ли переработать цикл отрисовки, чтобы в нём не было очистки матрицы?
Аватара пользователя
alerm

Activity
leader
leader
Сообщения: 682
Зарегистрирован: 02 май 2012, 21:28
Награды: 1
Версия LabVIEW: 20
Благодарил (а): 57 раз
Поблагодарили: 9 раз
Контактная информация:

Re: 3D Picture

Сообщение alerm »

dadreamer писал(а): Можно ли переработать цикл отрисовки, чтобы в нём не было очистки матрицы?
Не уверен, но утверждать не возьмусь.
Если уменьшить размер деталей в 10 раз, например, будет ли глючить на виртуалке? (расстояние смещения деталей тогда тоже надо уменьшить в 10 раз)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: 3D Picture

Сообщение dadreamer »

alerm писал(а):Не уверен, но утверждать не возьмусь.
Если уменьшить размер деталей в 10 раз, например, будет ли глючить на виртуалке? (расстояние смещения деталей тогда тоже надо уменьшить в 10 раз)
Я тоже не совсем уверен. Вопрос скорее к широкой аудитории.
Ответить

Вернуться в «Работа с графикой и звуком»