3D Picture
-
alerm
- leader
- Сообщения: 683
- Зарегистрирован: 02 май 2012, 21:28
- Награды: 1
- Версия LabVIEW: 20
- Благодарил (а): 59 раз
- Поблагодарили: 9 раз
- Контактная информация:
3D Picture
Посмотрел портал, темы по 3D Picture есть, но всё вроде не то, если ошибся, то извиняюсь заранее.
Как я понял, то нельзя задать координаты объекту до цикла, если хочешь изменять угол объекта во время работы программы?
См. хелп (на рисунке), можно либо задать координату, а потом повернуть, либо повернуть, а затем сместить. Т.е. если ничего не менять во время работы (не угол, не координату), то можно вынести за цикл, иначе прописывай положение каждый раз?
На сколько ест ресурсов такая система? (я так и не понял, время цикла прыгает на 2 порядка)
Почему происходит неправильное отображение деталей (могут прыгнуть в условный центр или потерять угол), хотя не должно быть такого (см. рисунок), т.е. отрисовка происходит после всех операций с поворотами?
Как я понял, то нельзя задать координаты объекту до цикла, если хочешь изменять угол объекта во время работы программы?
См. хелп (на рисунке), можно либо задать координату, а потом повернуть, либо повернуть, а затем сместить. Т.е. если ничего не менять во время работы (не угол, не координату), то можно вынести за цикл, иначе прописывай положение каждый раз?
На сколько ест ресурсов такая система? (я так и не понял, время цикла прыгает на 2 порядка)
Почему происходит неправильное отображение деталей (могут прыгнуть в условный центр или потерять угол), хотя не должно быть такого (см. рисунок), т.е. отрисовка происходит после всех операций с поворотами?
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 174 раза
- Контактная информация:
Re: 3D Picture
по некоторым пунктам я не очень ясно понимаю вопрос, так что ответы могут быть "не в тему"
по поводу пропадания углов могу сказать, что тут опять размеры влияют. У меня были проблемы схожего характера, но форуме Ni мне рекомендовали уменьшить детали (zoom), всё стало гладко и красиво, а потом заказчик ещё и снизил качество моделей (детали загружаются из stl файлов), так картинка и двигаться адекватно стала (до этого как раз дико медленно рисовалось, хотя загрузка процессора была не максимальной)
почему нельзя? первая отрисовка в заданном месте, потом можно смещатьКак я понял, то нельзя задать координаты объекту до цикла, если хочешь изменять угол объекта во время работы программы?
да, эта штука малость запутанная. потому как вращение после смещения происходит относительно начала координат и в первом случае деталь будет летать по кругу.См. хелп (на рисунке), можно либо задать координату, а потом повернуть, либо повернуть, а затем сместить.
а как иначе? если координата меняется, то откуда система её узнает?Т.е. если ничего не менять во время работы (не угол, не координату), то можно вынести за цикл, иначе прописывай положение каждый раз?
это очень сильно зависит от размера и качества деталей. в челом да, 3Д по моим экспериментам очень прожоорливая штука в но уменьшением размера деталей можно получить вполне нормальные скорости.На сколько ест ресурсов такая система? (я так и не понял, время цикла прыгает на 2 порядка)
Без картинки сложно сказать сто и почему происходит.Почему происходит неправильное отображение деталей (могут прыгнуть в условный центр или потерять угол), хотя не должно быть такого (см. рисунок), т.е. отрисовка происходит после всех операций с поворотами?
по поводу пропадания углов могу сказать, что тут опять размеры влияют. У меня были проблемы схожего характера, но форуме Ni мне рекомендовали уменьшить детали (zoom), всё стало гладко и красиво, а потом заказчик ещё и снизил качество моделей (детали загружаются из stl файлов), так картинка и двигаться адекватно стала (до этого как раз дико медленно рисовалось, хотя загрузка процессора была не максимальной)
-
alerm
- leader
- Сообщения: 683
- Зарегистрирован: 02 май 2012, 21:28
- Награды: 1
- Версия LabVIEW: 20
- Благодарил (а): 59 раз
- Поблагодарили: 9 раз
- Контактная информация:
Re: 3D Picture
Artem.spb, спасибо за заинтересованность!
1) при Relative?=true в блоке Rotate Y-axis.vi (просто пока только изменение в одной плоскости) деталь будет сходить с ума (крутиться);
2) при Relative?=false в блоке Rotate Y-axis.vi угол детали изменяется как надо, но деталь оказывается отвязана от общей системы координат и считает себя центром.
Как-то так.
Задать то можно, но если этого не делать при каждой итерации в цикле, то:почему нельзя? первая отрисовка в заданном месте, потом можно смещать
1) при Relative?=true в блоке Rotate Y-axis.vi (просто пока только изменение в одной плоскости) деталь будет сходить с ума (крутиться);
2) при Relative?=false в блоке Rotate Y-axis.vi угол детали изменяется как надо, но деталь оказывается отвязана от общей системы координат и считает себя центром.
Как-то так.
Под рукой нет, то могу сказать несколько особенностей: в программе идёт считывание данных с внешнего устройства, а на 3д отрисовываются как бы идеальный случай (он без проблем и косяков) и наш реальный (вот в нём бывают артефакты, когда детали прыгают в начало координат)Без картинки сложно сказать сто и почему происходит.
Картинка отображается в реальном времени, процессор грузит процентов на 20 (точно не помню). Хотя стоит сказать, что там пока простейшие фигуры (по 2 цилиндра и шарика и один параллелепипед).так картинка и двигаться адекватно стала (до этого как раз дико медленно рисовалось, хотя загрузка процессора была не максимальной)
Спасибо за подсказку, попробую уменьшить всё в 10 раз, как писал выше, пока всё равно детали стандартные.это очень сильно зависит от размера и качества деталей. в челом да, 3Д по моим экспериментам очень прожоорливая штука в но уменьшением размера деталей можно получить вполне нормальные скорости.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: 3D Picture
Можете скинуть с подобным поведением (простую модель на картинках хотя бы)? Мне кажется, дело тут в правильном порядке геометрических преобразований (что за чем следует), ну и в корректности самих преобразований. Вот взять стандартный пример от 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 писал(а):Задать то можно, но если этого не делать при каждой итерации в цикле, то:
1) при Relative?=true в блоке Rotate Y-axis.vi (просто пока только изменение в одной плоскости) деталь будет сходить с ума (крутиться);
2) при Relative?=false в блоке Rotate Y-axis.vi угол детали изменяется как надо, но деталь оказывается отвязана от общей системы координат и считает себя центром.
Как-то так.
Модель солнечной системы грузит ЦП у меня в пределах 3-8%, обычно 5-6%. Время цикла там - 20 мс. Если в цикле нет никаких геометрических преобразований, то можно время цикла даже уменьшить - быстрее будет отрисовываться.alerm писал(а):Картинка отображается в реальном времени, процессор грузит процентов на 20 (точно не помню). Хотя стоит сказать, что там пока простейшие фигуры (по 2 цилиндра и шарика и один параллелепипед).
Зависит ещё от видеокарты (встроенная/внешняя) и поддержки OpenGL (software/hardware).Artem.spb писал(а):это очень сильно зависит от размера и качества деталей. в челом да, 3Д по моим экспериментам очень прожоорливая штука в но уменьшением размера деталей можно получить вполне нормальные скорости.
-
alerm
- leader
- Сообщения: 683
- Зарегистрирован: 02 май 2012, 21:28
- Награды: 1
- Версия LabVIEW: 20
- Благодарил (а): 59 раз
- Поблагодарили: 9 раз
- Контактная информация:
Re: 3D Picture
dadreamer, у меня модель солнечной системы что-то вообще не грузит процессор (25% при отсутствие задержки вообще). Но та программа работает только на ноуте (не новом), т.к. там нужен блютуз, а на компе я его так и не смог нормально запустить. Время цикла там 10 мс, но там идёт не только отображение 3д.
Могу скинуть совсем не ту программу, но принцип управления 3д такой же (правда тут все детали внесены в цикл, даже те, которые не меняют положения).
Могу скинуть совсем не ту программу, но принцип управления 3д такой же (правда тут все детали внесены в цикл, даже те, которые не меняют положения).
Может поэтому я не смог на рабочем компе добиться глюков?Зависит ещё от видеокарты (встроенная/внешняя) и поддержки OpenGL (software/hardware).
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: 3D Picture
Вряд ли здесь дело именно в видеокарте (в данном случае). Потому что у меня вот этот пример глючит на домашнем компе, хотя видяха у меня стоит довольно неплохая. Тип глюка - при нажатии ЛКМ на сцене верхняя часть "ноги" начинает отрисовываться под 180 градусов относительно нижней, и одновременно отрисовывается в текущем положении, т.е. кадры чередуются между собой. При отпускании ЛКМ всё становится нормально. Записал вот такую видео-демонстрашку: Арифметику бегло посмотрел, вроде градусы получаются корректные при перемещении / нажатии кнопок мыши. ̶Т̶о̶ ̶е̶с̶т̶ь̶,̶ ̶б̶о̶л̶ь̶ш̶е̶ ̶с̶к̶л̶о̶н̶я̶ю̶с̶ь̶ ̶к̶ ̶т̶о̶м̶у̶,̶ ̶ч̶т̶о̶ ̶э̶т̶о̶ ̶б̶а̶г̶ ̶р̶е̶н̶д̶е̶р̶и̶н̶г̶а̶ ̶3̶D̶ ̶д̶в̶и̶ж̶к̶а̶.̶ Не знаю, поможет ли, но можете попробовать сделать всю работу с 3D Picture в одном цикле, как здесь сделано: https://decibel.ni.com/content/docs/DOC-4958alerm писал(а):Может поэтому я не смог на рабочем компе добиться глюков?
Последний раз редактировалось dadreamer 09 июл 2016, 13:30, всего редактировалось 1 раз.
-
alerm
- leader
- Сообщения: 683
- Зарегистрирован: 02 май 2012, 21:28
- Награды: 1
- Версия LabVIEW: 20
- Благодарил (а): 59 раз
- Поблагодарили: 9 раз
- Контактная информация:
Re: 3D Picture
dadreamer, в той программе в первом цикле приходят данные с прибора, при том там может приходить часть строки, так что там ещё слежение и допись предыдущей строки идёт, при необходимости (честно своровал здесь на портале, возможно у тебя ). Частота 100 Гц, так что цикл крутится раз в 10 мс. А 3д во втором параллельном цикле, так проще. Ни с последовательным портом, ни с 3д ранее дел не имел, так что косячу.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: 3D Picture
alerm, если убрать из цикла отрисовки для перемещения объекта, эти глюки исчезнут? Есть ли какие-то другие манипуляции, в процессе которых глюки исчезают? И я так понимаю, это только часть проблемы...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: 3D Picture
alerm
Сейчас начал по одному отключать перемещения объектов на сцене. И увидел, что все объекты изначально в одной точке созданы, т.е. в геометрическом центре. На каждой итерации цикла мы очищаем матрицу преобразований (Clear Transformation) и объект перемещается обратно в центр. Думаю, из-за этого наложения одних объектов на другие и видим подобные "косяки". Попробуйте все объекты растащить по своим местам ДО цикла отрисовки. Вот пример из вышеприведённой ссылки:
Сейчас начал по одному отключать перемещения объектов на сцене. И увидел, что все объекты изначально в одной точке созданы, т.е. в геометрическом центре. На каждой итерации цикла мы очищаем матрицу преобразований (Clear Transformation) и объект перемещается обратно в центр. Думаю, из-за этого наложения одних объектов на другие и видим подобные "косяки". Попробуйте все объекты растащить по своим местам ДО цикла отрисовки. Вот пример из вышеприведённой ссылки:
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 174 раза
- Контактная информация:
Re: 3D Picture
я в целом тоже рекомендую упростить до состояния исчезновения или нахождения глюка, сейчас слишком много деталей.dadreamer писал(а):alerm, если убрать из цикла отрисовки для перемещения объекта, эти глюки исчезнут?
Глюков со скачками сегмента я у себя не наблюдаю, но детали грубые, вот как раз такие же, как были у меня.
Не поможет. Для абсолютного перемещения объекта всё равно придётся очистить матрицу. Есть вариант относительного смещения, но тут могут быть сложности с не коммутативностью смещений (поворот+смещение ≠ смещение + поворот)dadreamer писал(а):alerm
Сейчас начал по одному отключать перемещения объектов на сцене. И увидел, что все объекты изначально в одной точке созданы, т.е. в геометрическом центре. На каждой итерации цикла мы очищаем матрицу преобразований (Clear Transformation) и объект перемещается обратно в центр. Думаю, из-за этого наложения одних объектов на другие и видим подобные "косяки". Попробуйте все объекты растащить по своим местам ДО цикла отрисовки. Вот пример из вышеприведённой ссылки:
А вот вынести за цикл неподвижные объекты я бы рекомендовал. Незачем их каждый раз "двигать".
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 174 раза
- Контактная информация:
Re: 3D Picture
Ещё вопрос возник: зачем делать clear+translate, когда есть settranslation?
как минимум, меньше функций и проще диаграмма, а может быть и часть глюков уберёт.
Суть в том, что clear смещает деталь в начало координат, а потом она смещается относительно текущего положения.
Функция же settranslation сразу смещает деталь в указанное положение (относительно начала координат).
Флаг Relative функции вращения делает то же самое: вызывает одну из этих двух функций (абсолютное или относительное положение).
Но повторюсь: я у себя никаких багов-артефактов не наблюдаю, гну если не считать, что я не понимаю, что нужно делать :)
цветная нога вполне корректно двигается с движением мышки (в пределах разумного), никуда не скачет, детали не убегают.
Проверял на LV15, win7 64, ноут без навороченной видяхи.
Дополнение: только сейчас понял, зачем всё в цикле. Там разве что коленный сустав можно за цикл вынести, остальное же движется в зависимости от режима.
А вот параллельное добавление деталей в сцену меня смущает. я бы последовательно это сделал, причём реф на сцену как раз бы и передавал из функции в функцию. Кто его знает, как оно там внутри устроено. создаётся копия при ветвлении (как со всем остальными данными), или нет (как в вижине).
как минимум, меньше функций и проще диаграмма, а может быть и часть глюков уберёт.
Суть в том, что clear смещает деталь в начало координат, а потом она смещается относительно текущего положения.
Функция же settranslation сразу смещает деталь в указанное положение (относительно начала координат).
Флаг Relative функции вращения делает то же самое: вызывает одну из этих двух функций (абсолютное или относительное положение).
Но повторюсь: я у себя никаких багов-артефактов не наблюдаю, гну если не считать, что я не понимаю, что нужно делать :)
цветная нога вполне корректно двигается с движением мышки (в пределах разумного), никуда не скачет, детали не убегают.
Проверял на LV15, win7 64, ноут без навороченной видяхи.
Дополнение: только сейчас понял, зачем всё в цикле. Там разве что коленный сустав можно за цикл вынести, остальное же движется в зависимости от режима.
А вот параллельное добавление деталей в сцену меня смущает. я бы последовательно это сделал, причём реф на сцену как раз бы и передавал из функции в функцию. Кто его знает, как оно там внутри устроено. создаётся копия при ветвлении (как со всем остальными данными), или нет (как в вижине).
-
alerm
- leader
- Сообщения: 683
- Зарегистрирован: 02 май 2012, 21:28
- Награды: 1
- Версия LabVIEW: 20
- Благодарил (а): 59 раз
- Поблагодарили: 9 раз
- Контактная информация:
Re: 3D Picture
Artem.spb, деталь с settranslation либо крутится как ненормальная, либо вращается относительно своего центра (в зависимости от Relative?), по другому у меня не получилось(
По поводу параллельного добавления деталей в сцену: я пробовал и последовательно, разницы нет.
dadreamer, я тоже думаю, что глюки связаны с тем, что иногда детали не успевают перемещаться и отрисовываются в "очищеном" виде, т.е. в начале координат.
Artem.spb, попробую уменьшить размеры деталей и увеличить масштаб, но это только в следующую среду, не раньше, потом отпишусь, что из этого вышло.
По поводу параллельного добавления деталей в сцену: я пробовал и последовательно, разницы нет.
dadreamer, я тоже думаю, что глюки связаны с тем, что иногда детали не успевают перемещаться и отрисовываются в "очищеном" виде, т.е. в начале координат.
Artem.spb, попробую уменьшить размеры деталей и увеличить масштаб, но это только в следующую среду, не раньше, потом отпишусь, что из этого вышло.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: 3D Picture
А если ЛКМ на сцене зажать, не глючит?Artem.spb писал(а):Но повторюсь: я у себя никаких багов-артефактов не наблюдаю, гну если не считать, что я не понимаю, что нужно делать :)
цветная нога вполне корректно двигается с движением мышки (в пределах разумного), никуда не скачет, детали не убегают.
Проверял на LV15, win7 64, ноут без навороченной видяхи.
Сейчас на виртуалке проверил. Там глючит даже без нажатия ЛКМ, видимо, виной тому совсем скудные параметры гостевой системы. Думаю, если достаточно быстро отрисовывает, то глюков не видно, а если не очень - то они и видны как раз. Можно ли переработать цикл отрисовки, чтобы в нём не было очистки матрицы?
-
alerm
- leader
- Сообщения: 683
- Зарегистрирован: 02 май 2012, 21:28
- Награды: 1
- Версия LabVIEW: 20
- Благодарил (а): 59 раз
- Поблагодарили: 9 раз
- Контактная информация:
Re: 3D Picture
Не уверен, но утверждать не возьмусь.dadreamer писал(а): Можно ли переработать цикл отрисовки, чтобы в нём не было очистки матрицы?
Если уменьшить размер деталей в 10 раз, например, будет ли глючить на виртуалке? (расстояние смещения деталей тогда тоже надо уменьшить в 10 раз)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: 3D Picture
Я тоже не совсем уверен. Вопрос скорее к широкой аудитории.alerm писал(а):Не уверен, но утверждать не возьмусь.
Если уменьшить размер деталей в 10 раз, например, будет ли глючить на виртуалке? (расстояние смещения деталей тогда тоже надо уменьшить в 10 раз)