3D Picture

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

3D Picture

Postby alerm on 04 Jul 2016, 17:19

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

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

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

Почему происходит неправильное отображение деталей (могут прыгнуть в условный центр или потерять угол), хотя не должно быть такого (см. рисунок), т.е. отрисовка происходит после всех операций с поворотами?
Снимок_.JPG
Снимок_.JPG (30.63 KiB) Viewed 7849 times
User avatar
alerm
leader
leader
 
Posts: 580
Joined: 02 May 2012, 21:28
Medals: 1
Activity (1)
LabVIEW Version: 13
Karma: 156
VIP teachers freelance

Re: 3D Picture

Postby Artem.spb on 07 Jul 2016, 04:34

по некоторым пунктам я не очень ясно понимаю вопрос, так что ответы могут быть "не в тему"

Как я понял, то нельзя задать координаты объекту до цикла, если хочешь изменять угол объекта во время работы программы?

почему нельзя? первая отрисовка в заданном месте, потом можно смещать

См. хелп (на рисунке), можно либо задать координату, а потом повернуть, либо повернуть, а затем сместить.

да, эта штука малость запутанная. потому как вращение после смещения происходит относительно начала координат и в первом случае деталь будет летать по кругу.

Т.е. если ничего не менять во время работы (не угол, не координату), то можно вынести за цикл, иначе прописывай положение каждый раз?

а как иначе? если координата меняется, то откуда система её узнает?

На сколько ест ресурсов такая система? (я так и не понял, время цикла прыгает на 2 порядка)

это очень сильно зависит от размера и качества деталей. в челом да, 3Д по моим экспериментам очень прожоорливая штука в :labview: но уменьшением размера деталей можно получить вполне нормальные скорости.

Почему происходит неправильное отображение деталей (могут прыгнуть в условный центр или потерять угол), хотя не должно быть такого (см. рисунок), т.е. отрисовка происходит после всех операций с поворотами?

Без картинки сложно сказать сто и почему происходит.
по поводу пропадания углов могу сказать, что тут опять размеры влияют. У меня были проблемы схожего характера, но форуме Ni мне рекомендовали уменьшить детали (zoom), всё стало гладко и красиво, а потом заказчик ещё и снизил качество моделей (детали загружаются из stl файлов), так картинка и двигаться адекватно стала (до этого как раз дико медленно рисовалось, хотя загрузка процессора была не максимальной)
Artem.spb
expert
expert
 
Posts: 1628
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 263
CLD hardware I/O VIP freelance

Re: 3D Picture

Postby alerm on 07 Jul 2016, 11:50

Artem.spb, спасибо за заинтересованность!
почему нельзя? первая отрисовка в заданном месте, потом можно смещать

Задать то можно, но если этого не делать при каждой итерации в цикле, то:
1) при Relative?=true в блоке Rotate Y-axis.vi (просто пока только изменение в одной плоскости) деталь будет сходить с ума (крутиться);
2) при Relative?=false в блоке Rotate Y-axis.vi угол детали изменяется как надо, но деталь оказывается отвязана от общей системы координат и считает себя центром.
Как-то так.
Без картинки сложно сказать сто и почему происходит.

Под рукой нет, то могу сказать несколько особенностей: в программе идёт считывание данных с внешнего устройства, а на 3д отрисовываются как бы идеальный случай (он без проблем и косяков) и наш реальный (вот в нём бывают артефакты, когда детали прыгают в начало координат)
так картинка и двигаться адекватно стала (до этого как раз дико медленно рисовалось, хотя загрузка процессора была не максимальной)

Картинка отображается в реальном времени, процессор грузит процентов на 20 (точно не помню). Хотя стоит сказать, что там пока простейшие фигуры (по 2 цилиндра и шарика и один параллелепипед).
это очень сильно зависит от размера и качества деталей. в челом да, 3Д по моим экспериментам очень прожоорливая штука в :labview: но уменьшением размера деталей можно получить вполне нормальные скорости.

Спасибо за подсказку, попробую уменьшить всё в 10 раз, как писал выше, пока всё равно детали стандартные.
User avatar
alerm
leader
leader
 
Posts: 580
Joined: 02 May 2012, 21:28
Medals: 1
Activity (1)
LabVIEW Version: 13
Karma: 156
VIP teachers freelance

Re: 3D Picture

Postby dadreamer on 07 Jul 2016, 12:15

alerm wrote:Задать то можно, но если этого не делать при каждой итерации в цикле, то:
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 wrote:Картинка отображается в реальном времени, процессор грузит процентов на 20 (точно не помню). Хотя стоит сказать, что там пока простейшие фигуры (по 2 цилиндра и шарика и один параллелепипед).

Модель солнечной системы грузит ЦП у меня в пределах 3-8%, обычно 5-6%. Время цикла там - 20 мс. Если в цикле нет никаких геометрических преобразований, то можно время цикла даже уменьшить - быстрее будет отрисовываться.
Artem.spb wrote:это очень сильно зависит от размера и качества деталей. в челом да, 3Д по моим экспериментам очень прожоорливая штука в :labview: но уменьшением размера деталей можно получить вполне нормальные скорости.

Зависит ещё от видеокарты (встроенная/внешняя) и поддержки OpenGL (software/hardware).
User avatar
dadreamer
professor
professor
 
Posts: 3303
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 844
I/O VIP vision internet

Re: 3D Picture

Postby alerm on 07 Jul 2016, 12:32

dadreamer, у меня модель солнечной системы что-то вообще не грузит процессор (25% при отсутствие задержки вообще). Но та программа работает только на ноуте (не новом), т.к. там нужен блютуз, а на компе я его так и не смог нормально запустить. Время цикла там 10 мс, но там идёт не только отображение 3д.
Могу скинуть совсем не ту программу, но принцип управления 3д такой же (правда тут все детали внесены в цикл, даже те, которые не меняют положения).
Untitled 1 (7).vi
прошу ссаными тряпками не кидаться
(310.66 KiB) Downloaded 91 times

Зависит ещё от видеокарты (встроенная/внешняя) и поддержки OpenGL (software/hardware).

Может поэтому я не смог на рабочем компе добиться глюков?
User avatar
alerm
leader
leader
 
Posts: 580
Joined: 02 May 2012, 21:28
Medals: 1
Activity (1)
LabVIEW Version: 13
Karma: 156
VIP teachers freelance

Re: 3D Picture

Postby dadreamer on 07 Jul 2016, 14:00

alerm wrote:Может поэтому я не смог на рабочем компе добиться глюков?

Вряд ли здесь дело именно в видеокарте (в данном случае). Потому что у меня вот этот пример глючит на домашнем компе, хотя видяха у меня стоит довольно неплохая. Тип глюка - при нажатии ЛКМ на сцене верхняя часть "ноги" начинает отрисовываться под 180 градусов относительно нижней, и одновременно отрисовывается в текущем положении, т.е. кадры чередуются между собой. При отпускании ЛКМ всё становится нормально. Записал вот такую видео-демонстрашку:
capture-1.rar
глюки отрисовки
(752.4 KiB) Downloaded 85 times
Арифметику бегло посмотрел, вроде градусы получаются корректные при перемещении / нажатии кнопок мыши. ̶Т̶о̶ ̶е̶с̶т̶ь̶,̶ ̶б̶о̶л̶ь̶ш̶е̶ ̶с̶к̶л̶о̶н̶я̶ю̶с̶ь̶ ̶к̶ ̶т̶о̶м̶у̶,̶ ̶ч̶т̶о̶ ̶э̶т̶о̶ ̶б̶а̶г̶ ̶р̶е̶н̶д̶е̶р̶и̶н̶г̶а̶ ̶3̶D̶ ̶д̶в̶и̶ж̶к̶а̶.̶ Не знаю, поможет ли, но можете попробовать сделать всю работу с 3D Picture в одном цикле, как здесь сделано: https://decibel.ni.com/content/docs/DOC-4958
Last edited by dadreamer on 09 Jul 2016, 13:30, edited 1 time in total.
User avatar
dadreamer
professor
professor
 
Posts: 3303
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 844
I/O VIP vision internet

Re: 3D Picture

Postby alerm on 07 Jul 2016, 15:48

dadreamer, в той программе в первом цикле приходят данные с прибора, при том там может приходить часть строки, так что там ещё слежение и допись предыдущей строки идёт, при необходимости (честно своровал здесь на портале, возможно у тебя :thank: :D ). Частота 100 Гц, так что цикл крутится раз в 10 мс. А 3д во втором параллельном цикле, так проще. Ни с последовательным портом, ни с 3д ранее дел не имел, так что косячу.
User avatar
alerm
leader
leader
 
Posts: 580
Joined: 02 May 2012, 21:28
Medals: 1
Activity (1)
LabVIEW Version: 13
Karma: 156
VIP teachers freelance

Re: 3D Picture

Postby dadreamer on 07 Jul 2016, 18:17

alerm, если убрать из цикла отрисовки :vi: для перемещения объекта, эти глюки исчезнут? Есть ли какие-то другие манипуляции, в процессе которых глюки исчезают? И я так понимаю, это только часть проблемы...
User avatar
dadreamer
professor
professor
 
Posts: 3303
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 844
I/O VIP vision internet

Re: 3D Picture

Postby dadreamer on 07 Jul 2016, 19:52

alerm
Сейчас начал по одному отключать перемещения объектов на сцене. И увидел, что все объекты изначально в одной точке созданы, т.е. в геометрическом центре. На каждой итерации цикла мы очищаем матрицу преобразований (Clear Transformation) и объект перемещается обратно в центр. Думаю, из-за этого наложения одних объектов на другие и видим подобные "косяки". Попробуйте все объекты растащить по своим местам ДО цикла отрисовки. Вот пример из вышеприведённой ссылки:
Attachments
2016-07-07_21-54-08.jpg
User avatar
dadreamer
professor
professor
 
Posts: 3303
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 844
I/O VIP vision internet

Re: 3D Picture

Postby Artem.spb on 07 Jul 2016, 22:28

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

я в целом тоже рекомендую упростить до состояния исчезновения или нахождения глюка, сейчас слишком много деталей.

Глюков со скачками сегмента я у себя не наблюдаю, но детали грубые, вот как раз такие же, как были у меня.

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


Не поможет. Для абсолютного перемещения объекта всё равно придётся очистить матрицу. Есть вариант относительного смещения, но тут могут быть сложности с не коммутативностью смещений (поворот+смещение ≠ смещение + поворот)
А вот вынести за цикл неподвижные объекты я бы рекомендовал. Незачем их каждый раз "двигать".
Artem.spb
expert
expert
 
Posts: 1628
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 263
CLD hardware I/O VIP freelance

Re: 3D Picture

Postby Artem.spb on 08 Jul 2016, 04:23

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

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

Дополнение: только сейчас понял, зачем всё в цикле. Там разве что коленный сустав можно за цикл вынести, остальное же движется в зависимости от режима.
А вот параллельное добавление деталей в сцену меня смущает. я бы последовательно это сделал, причём реф на сцену как раз бы и передавал из функции в функцию. Кто его знает, как оно там внутри устроено. создаётся копия при ветвлении (как со всем остальными данными), или нет (как в вижине).
Artem.spb
expert
expert
 
Posts: 1628
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 263
CLD hardware I/O VIP freelance

Re: 3D Picture

Postby alerm on 08 Jul 2016, 10:16

Artem.spb, деталь с settranslation либо крутится как ненормальная, либо вращается относительно своего центра (в зависимости от Relative?), по другому у меня не получилось(
По поводу параллельного добавления деталей в сцену: я пробовал и последовательно, разницы нет.
dadreamer, я тоже думаю, что глюки связаны с тем, что иногда детали не успевают перемещаться и отрисовываются в "очищеном" виде, т.е. в начале координат.
Artem.spb, попробую уменьшить размеры деталей и увеличить масштаб, но это только в следующую среду, не раньше, потом отпишусь, что из этого вышло.
User avatar
alerm
leader
leader
 
Posts: 580
Joined: 02 May 2012, 21:28
Medals: 1
Activity (1)
LabVIEW Version: 13
Karma: 156
VIP teachers freelance

Re: 3D Picture

Postby dadreamer on 08 Jul 2016, 14:21

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

А если ЛКМ на сцене зажать, не глючит?

Сейчас на виртуалке проверил. Там глючит даже без нажатия ЛКМ, видимо, виной тому совсем скудные параметры гостевой системы. Думаю, если достаточно быстро отрисовывает, то глюков не видно, а если не очень - то они и видны как раз. Можно ли переработать цикл отрисовки, чтобы в нём не было очистки матрицы?
User avatar
dadreamer
professor
professor
 
Posts: 3303
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 844
I/O VIP vision internet

Re: 3D Picture

Postby alerm on 08 Jul 2016, 15:03

dadreamer wrote: Можно ли переработать цикл отрисовки, чтобы в нём не было очистки матрицы?

Не уверен, но утверждать не возьмусь.
Если уменьшить размер деталей в 10 раз, например, будет ли глючить на виртуалке? (расстояние смещения деталей тогда тоже надо уменьшить в 10 раз)
User avatar
alerm
leader
leader
 
Posts: 580
Joined: 02 May 2012, 21:28
Medals: 1
Activity (1)
LabVIEW Version: 13
Karma: 156
VIP teachers freelance

Re: 3D Picture

Postby dadreamer on 08 Jul 2016, 15:28

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

Я тоже не совсем уверен. Вопрос скорее к широкой аудитории.
User avatar
dadreamer
professor
professor
 
Posts: 3303
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 844
I/O VIP vision internet

Next

Return to Работа с графикой и звуком

Who is online

Users browsing this forum: No registered users and 1 guest

cron