Вверх ↑
Этот топик читают: Гость
Ответов: 865
Рейтинг: 12
#1: 2019-07-06 13:41:53 ЛС | профиль | цитата




Суть идеи в том что настоящая ВиАр уже не за горами а значит неплохо бы озаботься поддержкой в ХайАсме (Пусть даже на уровне ИДЕ а не прикладных программ )
Скрины реальные без фото-жабы но получены через довольно слабо приспособленную для программирования программу VRToolbox (создает вр-окружение и позволяет вытаскивать окна в отдельные виртуальные "голографические экраны ")

Редактировалось 3 раз(а), последний 2019-07-06 13:58:23
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Ответов: 1416
Рейтинг: 97
#2: 2019-07-07 18:00:06 ЛС | профиль | цитата
Чего-то не очень понятно.
Кроме рендеринга экрана в текстуру ничего не видно - в смысле задумки.
Назови мне движок, даже из старых, который этого не делает.
Вот так даже забавней http://glslsandbox.com/e#22121.0
https://habr.com/ru/post/126290/
Пусть даже на уровне ИДЕ а не прикладных программ

Опять на паскале что-ли?

Редактировалось 6 раз(а), последний 2019-07-07 23:19:00
карма: 3

0
Ответов: 865
Рейтинг: 12
#3: 2019-07-08 11:45:10 ЛС | профиль | цитата
Теперь уже я теряюсь в догадках что ты увидел на моих скриншотах .
Там просто не очень ловко захвачено изображение из моей "почти настоящей ВиАр-ки".
( точнее из программы "с говорящим названием" VR Toolbox: 360 Desktop . )

Я просто подумал, что хорошо бы сделать "виртуальную обертку" специально для Хайсама ... Не просто красивый виртуальный фон "лаба темного мага" а "инструментальное расширение" .

Возможно стоит сделать и отдельный "3д-редактор схем". Но даже без него можно разместить огромные виртуальные экраны, сделать "управление взглядом" и удобные инструментальные и информационные панели (Кстати в VRToolbox в полне можно растащить хайасм на отдельные элементы но управление, будет или обычное "мышиное" или с помощь не очень адаптированных для этого "3д контроллеров" - один как раз на первом скрине видно (в окне портала "воздухе всит" - то есть лежит на реальном столе который я не озаботился "синхронизировать" с виртуальным ) )

flint2 писал(а):
Опять на паскале что-ли?


А какая разница ? Есть например фреймворк OpenVR и там сугубо фиолетово откуда ты будешь вызвать функции из DLL.

Редактировалось 7 раз(а), последний 2019-07-08 12:02:24
карма: 1

0
Ответов: 1416
Рейтинг: 97
#4: 2019-07-08 12:31:24 ЛС | профиль | цитата
Не просто красивый виртуальный фон "лаба темного мага" а "инструментальное расширение" .

Все инструментальные расширения такого плана неоднократно делались, если обобщить то и навигатор по файловой системе делали в 2D и 3D, но все они потерпели фиаско.
Наверное потому, что отвлекают от основного функционала и заставляют делать лишние телодвижения. Всё, что не продиктовано необходимостью - надо отсечь!

Возможно стоит сделать и отдельный "3д-редактор схем".

Сама по себе затея с кубиками, для разработки, скажем мягко говоря не очень... А -3D перебор!
Даже все концепции типа Blueprint уходят в небытие, хотя они несут вполне оправданный функционал в различных системах разработки и хорошо в них вписываются.
Я, по простоте своей, думаю, что качественней VS будет что-то сделать проблематично.
А какая разница ? Есть например фреймворк OpenVR и там сугубо фиолетово откуда ты будешь вызвать функции из DLL.

Ну, это да!
Только можно подобрать и получше, чем OpenVR.

Редактировалось 4 раз(а), последний 2019-07-08 12:58:07
карма: 3

0
Ответов: 865
Рейтинг: 12
#5: 2019-07-09 21:47:39 ЛС | профиль | цитата
Суть в том что есть большая разница между "просто ЗД" и реальным ВиАр .

Я вообще брал свой Леново Эксплорер не для игр а с надеждой заменить им постоянно растущую "телестудию на столе"... К сожалению для полноценной работы с текстом в ВиАр (что для меня важно ) он пока не годится по вполне понятным техническим причинам . (Просто разрешения 2к (1440х1440 на один глаз) недостаточно) Однако для редактирования схем это значительно менее критично.

Но даже в таков виде становится совершенно очевидно как только ВиАр дойдет до нормы (А это по сути следующие поколение шлемов ) то у множества пользователей "мульти-экраны" на столах исчезнут как класс! Да конструкция на голове пока что тоже "не солнцезащитные очки" но честное слово она даже сейчас напрягает куда как меньше чем вот например вот такая коллекция мониторов

(Обычно у меня работают 2-3 но и они тоже, далеко не на всякий стол поместится )
http://i.piccy.info/i9/1813fac9bc60525594627ed1c7e6cd31/1545763661/27800/1291146/IMG_20181225_203316_500.jpg
Зы
Кстати ты подкинул мне отличную мысль ! Можно попробовать использовать файловый менеджер Tactile 3D в режиме ВР !

(Примерно тем же образом как запускаются ВиАр многие старые игры )

Редактировалось 9 раз(а), последний 2019-07-13 23:28:18
карма: 1

0
Ответов: 1416
Рейтинг: 97
#6: 2019-07-09 23:40:47 ЛС | профиль | цитата
Суть в том что есть большая разница между "просто ЗД" и реальным ВиАр .

Я в предыдущем посте давал ссылку на то как можно без шлема сделать на простом мониторе и видеокарте практически объёмное стереоизображение. https://youtu.be/LacyvLV30_I Вот это по моему интересно.
Будет время, попробую реализовать. А вот если сделать представление деревьев данных, в 3D - это круто будет и функционально. В каком то фильме Дэвида Аттенборо впечатлило дерево видов в 3D!
Кстати ты подкинул мне отличную мысль ! Можно попробовать использовать файловый менеджер Tactile 3D в режиме ВР !

Вот наспех сделал к этому посту https://yadi.sk/d/55zpHjm7OtHxuw Всё по честному, файлы открываются и запускаются.
Конечно не 3D, но суть понятна, что все похожие навороты не должны присутствовать в инструментарии, куда я причисляю файловый менеджер и текстовый редактор.
Все эти бантики отвлекают и не академично выглядят. В прикладной поделке, или игрушке, наверное даже прикольно будет выглядеть.
Notepad++ тоже с перебором сделан.

Редактировалось 11 раз(а), последний 2019-07-10 01:18:44
карма: 3

0
Ответов: 865
Рейтинг: 12
#7: 2019-07-10 19:42:36 ЛС | профиль | цитата
А "отслеживание взгляда" ? Это я уже даже лично собирал (в примерах к OpenCV есть ) прикольно но НЕ ТО !

Тем кто не гонял Вр хоть немного, объяснить в чем дело довольно сложно.
Там "тоже самое но наоборот"...

(Обрати внимание на вроде бы незаметные покачивания головы )
Вот наспех сделал к этому посту

О это интересно !
Кстати глянь https://rutracker.org/forum/viewtopic.php?t=433187

Редактировалось 7 раз(а), последний 2019-08-19 12:50:37
карма: 1

0
Ответов: 1416
Рейтинг: 97
#8: 2019-07-10 20:46:22 ЛС | профиль | цитата
Там "тоже самое но наоборот"

...
(Обрати внимание на вроде бы незаметные покачивания головы )

О, это я понимаю!
Если держать в уме отсутствие датчиков перемещения взгляда, к стати они не нужны по большому счёту, то почти. Но всё-таки не то, что в моём примере.
Перемещается должна не камера и не предмет рассмотрения, а вся "вселенная" вокруг объекта. Как-бы антипод понятию камеры. Направление взгляда можно заменить мышкой, только стены должны уходить вверх, а не поворот на угол, когда взгляд (камера на небольшой угол) идёт вниз. Короче, "задник" - это не вид из камеры.
Кстати глянь

Я вчера уже смотрел.
Отзывы тебя не смущают?
Есть ещё прикольная оболочка, вместо окон, не помню как называется (орёл, кондор, ... птичья фамилия - чего-то в этом духе). Там несколько отдельных экранов раскрываются как матрёшка и растягиваются, в которых опять могут быть экраны запущенных приложений игр, папок и всё, что к ним относится, - и так до бесконечности.
Вообще представление деревьев, это ещё та тема. Я даже делал такие https://itol.embl.de/itol.cgi , но тоже не подошло...
Для каждой задачи нужна своя "форма".
пока остановился примерно на этом


Только количество узлов исчисляется тысячами, а листьев 4 миллиона.
Это для специфических задач. Понятийные связи слов - лингвистика
P.S.
Вся фишка в "стерео", это совсем другой расчёт геометрии, чем вид из камеры в GL, или подобных, а сам предмет как раз считается по законам GL.

Редактировалось 10 раз(а), последний 2019-07-10 22:11:32
карма: 3

0
Ответов: 865
Рейтинг: 12
#9: 2019-07-11 03:10:30 ЛС | профиль | цитата
EagleMode - называется (а сама технология называется zoomable user interface (ZUI) )
http://eaglemode.sourceforge.net
Добавить слои и прозрачность (и чуть убавить графики) и будет одина из моих старых идей на тему "файловых менеджеров будущего" ( Даже вроде на хайасме пытался делать но забросил )
Зы
Мнемоническая схема ? (Есть много спец софта для их построения )

Зы Зы
Стерео режим без оптимизации это как раз очень просто. Фокус ВР в трекинге головы (Кстати есть возможность запускать старые игры в ВиАр вообще без стерео режима но с трекингом : эффект погружения слабее (вспоминается сцена из Мстителей "одноглазый Фъюри и 3д дисплей" ) но все равно довольно интересно + запускается практически все .) по всем осям 6DOF (6 степеней свободы )

Три из них (повороты) делаются достаточно просто акселерометром и гиродатчиками почти любого смартфона а вот еще три (смещение относительно текущих или фиксированных координат ) получить сложнее нужно подобие дальномера или 3д сканирования .
Сейчас это делают обычно с помощью дополнительных камер ( в моем WMR шлеме (Windows Mixed Reality ) все относительно просто два глазка непосредственно в шлеме но есть и другие варианты вроде четырех камер по периметру комнаты )

Но вообще я думаю что будущее за Дополнений реальностью (и как ты помнишь толкаю с "упорством достойным лучшего применения" свой проект "цифровая оптика" )
Скрин очередной попытки анализа изображения для управления жестами и мои грубые попытки "сканирования"


...но ВиАр так или наче сохранится хотя бы виде вспомогательного режима.
Virtual.Desktop.v1.3.VR + моя прога (специально не расширенная на весь экран)
(Окно вверху отображает вид в шлеме )
Зы Зы Зы
В догонку кстати немного посмотреть на "виртуальные красоты" можно и без всякого шлема .
Как запустить Windows Mixed Reality в режиме симуляции
(Хотя разумеется это "чай с сахаром в вприглядку" но убедиться в том что все почти "по взрослому" можно... главная фишка в том, что в режиме симуляции, можно запускать почти весь ВР-софт который иначе вообще без шлема не увидишь )

Редактировалось 18 раз(а), последний 2019-07-11 11:24:21
карма: 1

0
Ответов: 1416
Рейтинг: 97
#10: 2019-07-11 11:25:09 ЛС | профиль | цитата
'EagleMode - называется' - так точно!

Мнемоническая схема ? (Есть много спец софта для их построения )

Перепробовал весь существующий софт и пришёл к выводу, что для каждой задачи надо своё делать.
Что касается деревьев, то конечно можно сделать универсальный кубик для представления в 2D и 3D. Я делал себе в 2D базу для хранения ссылок, статей, файлов - в общем навигатор по ресурсам и темам. Очень удобно. У меня включается вместе с Total Commander. Надо сделать плагином.
Если сделать в 3D с зумом, то вообще нет слов.
Чтобы сделать такой кубик, нужна хорошая, современная графика с шейдерами и до кучи с физикой. Графика должна быть универсальной.
Чтобы её прикрутить, то надо пободаться с убогим KOL.
Второе, графика на кубиках - это что-то!
По этому надо прикрутить туда скриптовый язык. Кубики скриптов в HiAsm - это совсем из другой оперы.
Ну и GUI для графония.
По отдельности я подобрал нужный софт (самому писать движок - это на любителя), но и много чего портировать из С++ нужно.
Я вообще давно перешел на C++.
Есть на паскале движки - не первой свежести и к ним прикрутить всё остальное, как чесать левое ухо правой рукой. Враперы - далеко не панацея!
Постепенно занимаюсь этой тематикой...

Редактировалось 2 раз(а), последний 2019-07-11 11:41:54
карма: 3

0
Ответов: 865
Рейтинг: 12
#11: 2019-07-11 11:51:27 ЛС | профиль | цитата
1 По Мнемонической схеме: (ИМХО) Просто нужно дать пользователю больше свободы + несколько "предустановленных" стилей .

2 Деревья как таковые очень неудобная для использования структура . Часто нужно ее скрыть от пользователя.
Есть идея сделать что-то вроде Tactile 3D но с "телепортами".

3 Я напротив хотел бы получить почти текстовый интерфейс но с ZUI и прозрачными слоями ( типа газеты на целлофане ), графика только для "иллюстраций".
(Рющечки иконки и прочие иногда мрачно задалбывают !)
Старый добрый дос навигатор как пример (вот бы что-то вроде него сделать но рассчитанное на современные разрешения и технологии )



4 Кол это разумеется уже давно "мертвая кобыла" и давно нужно сделать что-то другое . Но графика для файл менеджера нужна довольно "условно" а это значит что стандартного OpenGl ( ИМХО ) хватит с избытком.

5 Скриптовый движок не проблема, проблема сделать его использование "не убивающим скорость".Я как помнишь писал что-то вроде векторного редактора для генерации НТML-кода и там мне пришлось делать более чем ТРЕХУРОВНЕВУЮ систему для более менее быстрого вывода графики. (Сначала исполняется скрипт но рисует не на экран, а в коллекцию метафйлов(WMF) в памяти (Для чего ? Так Скрипт медленный и запаришься "пыль глотать" если юзать его при любой перерисовке) потом эта коллекция рисуется на буферном БитМапе и только после этого новая картинка выводится на экран ... и это еще СИЛЬНО упрощенное описание без всяческих "теневых коллекций" и прочего)

6 Я засел в Лазарусе и меня все устраивает, кроме разве что изредка возникающей нужды, в подключении Си-шных библиотек (Что получается не всегда корректно и быстро)

7 Что посоветуешь как лучшую среду разработки для С++ ? (Копать исходники без оболочки иногда ну очень нудно, да и хочется Си вспомнить. )

Редактировалось 11 раз(а), последний 2019-07-11 12:40:57
карма: 1

0
Ответов: 1416
Рейтинг: 97
#12: 2019-07-11 12:31:59 ЛС | профиль | цитата
1 пункт - согласен.
2 пункт - не согласен.
всё зависит, как сделать и для чего.
Вот например: https://yadi.sk/d/LahS745i_WyrWg правда давно делал и всё примитивно, но тем не менее. Наглядней, кроме как на дереве не покажешь!
3 пункт, я-же выкладывал:
http://forum.hiasm.com/getfile/38667
http://forum.hiasm.com/getfile/38666
http://forum.hiasm.com/getfile/38665
В зависимости, что есть на компьютере, даже "вулкан". Переходник на паскаль тоже имеется. Погугли.
4 пункт полностью согласен + паскаль туда-же пришел.
На других сайтах просто не найдёшь собеседника на диалектах паскаля.
Надо переходить на C++ и C#, чтоб обмениваться мыслями.
5 пункт JIT код, - LUAJIT побыстрее всех CИ и Delphi работает, почти ассемблер.
LUA Специально для графики разрабатывалась!
6 пункт ...
7 пункт VS - лучшего наверное нет, немножко громоздко, но сейчас можно выбирать, что ставить, а что нет.
Если чего-то по простому, или в OBJ-OMF перегнать для delphi - CBuilder6 пользую.
Если в каких-то средах разработки 3D, то хватает минимального пакета установки C++, C#.
В Win 10 уже всё есть изначально! Можешь установить http://forum.hiasm.com/topic/66686 , что Nic делает, и всё что надо встанет.

Редактировалось 7 раз(а), последний 2019-07-11 13:07:25
карма: 3

0
Ответов: 865
Рейтинг: 12
#13: 2019-08-10 16:31:59 ЛС | профиль | цитата
Я тут намедни добрался до "навигационных камер" своего WMR-шлема так что теперь это уже не совсем VR/MR шлем а и "немного AR" (Идея эмулировать ХолЛенс "в полном объеме" пока немного в пролете из за низкого качества полученной картинки... там как-бы две ч/б камеры 640х480)






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

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

Но скотинка довольно забавная уже сейчас ...
*Управление окнами Windows  
*(Расширенная версия: добавлены функции захвата графики )
Make(delphi)
ver(4.05 build 186)
Add(MainForm,18141,81,105)
{
Left=310
Top=283
Width=683
Height=284
Caption=""
Point(Close)
link(onCreate,18378:doEvent2,[(125,125)(125,97)(97,97)(97,69)])
link(Close,2526734:GetData,[(87,72)(68,72)])
}
Add(ChildPanel,18876,11,56)
{
link(onEvent1,18378:doEvent1,[])
link(onEvent2,87406:doEvent,[(69,81)(69,167)])
link(onEvent3,7361912:doSwitch,[(61,84)(61,345)])
}
BEGIN_SDK
Add(EditMulti,73583,3,3)
{
EventCount=3
WorkCount=1
VarCount=3
Width=393
Height=277
link(doWork1,16249923:doText,[(16,33)(16,188)])
link(Var1,16249923:Text,[(9,247)(32,247)])
link(Var2,1511723:Checked,[(16,267)(71,267)])
link(Var3,5759222:Checked,[(23,268)(153,268)])
}
Add(Panel,68008,28,127)
{
Width=667
Height=30
Align=2
Font=[Arial,8,0,0,1]
Point(doColor)
}
Add(ChanelToIndex,32148,147,49)
{
Count=5
link(onIndex,73583:onEvent2,[(182,55)(182,16)])
}
Add(Button,41799,70,56)
{
Left=110
Top=5
Width=75
Font=[Arial,8,0,0,1]
Caption="Hide"
link(onClick,32148:doWork2,[])
}
Add(Button,60593,24,16)
{
Left=5
Top=5
Width=20
Font=[Arial,8,0,0,1]
Caption="->"
link(onClick,73583:onEvent1,[(83,15)(83,9)])
}
Add(Button,13483,70,91)
{
Left=190
Top=5
Width=75
Font=[Arial,8,0,0,1]
Caption="Show"
link(onClick,32148:doWork3,[(121,97)(121,69)])
}
Add(Button,69494,70,21)
{
Left=30
Top=5
Width=75
Font=[Arial,8,0,0,1]
Caption="Close"
link(onClick,32148:doWork1,[(121,27)(121,55)])
}
Add(Button,9237645,70,133)
{
Left=265
Top=5
Caption="Capture"
link(onClick,32148:doWork4,[(131,139)(131,76)])
}
Add(Button,9149992,91,224)
{
Left=325
Top=5
Caption="Found"
link(onClick,32148:doWork5,[(139,230)(139,83)])
}
Add(Edit,16249923,26,182)
{
Left=390
Top=5
Width=110
Text="WMR Str"
}
Add(CheckBox,1511723,70,182)
{
Left=505
Top=5
Caption="Auto"
link(onCheck,73583:onEvent3,[(189,188)(189,23)])
}
Add(CheckBox,5759222,147,238)
{
Left=560
Top=5
Width=35
Caption="FS"
}
Add(FormatStr,12898161,770,70)
{
DataCount=1
Mask="HTTP/1.1 200 OK\r\nContent-Type: image/jpeg\r\nContent-Length: %1\r\nConnection: close\r\n\r\n"
Point(FString)
link(onFString,3322281:doWork,[])
link(Str1,9512716:Size,[(776,61)(672,61)(672,156)(636,156)])
}
Add(StreamConvertor,3708782,770,140)
{
Mode=6
link(onResult,7108863:doWork,[])
}
Add(FileStream,9512716,623,105)
{
FileName="1.jpg"
link(onLoad,1388064:doEvent1,[])
}
Add(TCP_Server,9120016,539,105)
{
Port=178
Point(doCloseAll)
link(onRead,9459175:doEvent1,[])
}
Add(Hub,1388064,693,105)
{
OutCount=3
link(onEvent1,12898161:doString,[(736,111)(736,76)])
link(onEvent2,3708782:doConvert,[(740,118)(740,146)])
link(onEvent3,9120016:doCloseAll,[(718,125)(718,167)(529,167)(529,132)])
}
Add(LineBreakEx,3322281,826,70)
{
Caption="send"
}
Add(LineBreakEx,14280256,476,119)
{
Caption="send"
Type=1
link(OnEvent,9120016:doSend,[])
}
Add(LineBreakEx,7108863,826,140)
{
Caption="send"
}
Add(Hub,9459175,581,105)
{
link(onEvent1,9512716:doOpen,[])
link(onEvent2,9512716:doClose,[])
}
Add(CheckBox,11302169,210,238)
{
Left=608
Top=5
Caption="HTTP"
link(onCheck,15474801:doSwitch,[(317,244)(317,104)])
}
Add(Switch,15474801,329,98)
{
Point(onOn)
Point(onOff)
link(onOn,9120016:doOpen,[])
link(onOff,9120016:doClose,[])
}
END_SDK
Add(IndexToChanel,87406,266,161)
{
Count=5
Point(Index)
link(onEvent1,5901:doClose,[(352,167)(352,205)(403,205)(403,195)])
link(onEvent2,50041:doWork1,[])
link(onEvent3,50041:doWork2,[])
link(onEvent4,12678596:doData,[(344,207)(344,230)])
link(onEvent5,11925794:doEnum,[(330,223)(330,275)(268,275)(268,356)])
}
Add(MultiElementEx,494139,224,70)
{
link(onEventData,52907:doAdd,[(334,76)(334,13)])
link(onFString,14833197:doAdd,[(292,83)(292,111)])
}
BEGIN_SDK
Add(EditMultiEx,7556502,21,21)
{
WorkCount=#6:doEnum|
EventCount=#11:onEventData|9:onFString|
link(doEnum,7059:doEnum,[(35,27)(35,55)])
}
Add(FormatStr,8535,175,49)
{
Mask="%1 - %2"
link(onFString,7556502:onFString,[(264,55)(264,34)])
link(Str2,7059:ClassName,[(188,39)(160,39)(160,90)(62,90)])
}
Add(WinEnum,7059,49,49)
{
VisibleOnly=1
Point(ClassName)
link(onFindWindow,2077:doEvent1,[])
}
Add(Hub,2077,91,49)
{
link(onEvent1,8535:doString,[])
link(onEvent2,5568525:doData,[])
}
Add(DoData,5568525,119,56)
{
link(onEventData,7556502:onEventData,[(241,62)(241,27)])
link(Data,7059:Handle,[(125,44)(95,44)(95,93)(55,93)])
}
END_SDK
Add(LineBreak,2308260,101,413)
{
Caption="+Sheld"
link(Out,14094907:doWork3,[(155,419)])
Primary=[8699763,3,-406]
}
Add(StrList,52907,413,7)
{
}
Add(Hub,18378,109,56)
{
InCount=2
OutCount=3
link(onEvent1,52907:doClear,[(251,62)(251,20)])
link(onEvent2,14833197:doClear,[(186,69)(186,118)])
link(onEvent3,494139:doEnum,[])
}
Add(WinTools,5901,413,168)
{
link(Handle,6804028:Var2,[])
}
Add(ChanelToIndex,50041,364,168)
{
Count=4
link(onIndex,5901:doVisible,[])
}
Add(ChildPanelEx,14833197,329,105)
{
link(onClick,5977427:doEvent1,[(369,111)(369,97)])
}
BEGIN_SDK
Add(EditMultiEx,8602565,21,21)
{
WorkCount=#5:doAdd|7:doClear|
EventCount=#7:onClick|
VarCount=#6:String|5:Array|
link(doAdd,74780:doAdd,[(35,27)(35,55)])
link(doClear,74780:doClear,[(35,34)(35,62)])
link(String,74780:String,[(27,165)(76,165)])
link(Array,74780:Array,[(44,192)(69,192)])
}
Add(Panel,656075,168,126)
{
Top=30
Width=240
Height=215
Align=1
}
Add(ListBox,74780,49,49)
{
Top=30
Width=274
Height=217
Align=5
Font=[Arial,8,0,0,1]
Point(String)
link(onClick,8602565:onClick,[(201,62)(201,27)])
}
END_SDK
Add(ArrayRW,26538,413,98)
{
link(Array,15923548:Var2,[])
}
Add(HubEx,14094907,151,371)
{
link(onEvent,9989187:doStop,[])
}
Add(Image,13631593,595,105)
{
Left=240
Top=30
Width=427
Height=215
Align=5
link(onClick,3211863:doWork2,[(636,111)(636,167)])
}
Add(ScreenShort,47616,487,210)
{
link(onCapture,8492355:doWork3,[(527,216)])
}
Add(GetDataEx,6804028,413,140)
{
link(Data,26538:Item,[])
}
Add(Position,273378,427,350)
{
link(onSearch,14700487:doCompare,[])
link(Str,12753063:Item,[(433,338)(401,338)(401,394)(356,394)])
link(Target,9314218:Var,[(440,337)(461,337)])
}
Add(LineBreak,8843240,11,168)
{
Caption="FS+"
Type=1
link(Data,18876:Var1,[])
Primary=[9314218,444,147]
}
Add(If_else,14700487,469,350)
{
Op2=Integer(1)
link(onTrue,16531488:doData,[(520,356)(520,426)])
}
Add(ArrayEnum,11925794,280,350)
{
link(onItem,12753063:doRead,[])
link(Array,9912768:Var,[])
}
Add(GetDataEx,15923548,413,70)
{
link(Data,52907:Array,[(419,61)(433,61)])
}
Add(LineBreak,3196951,483,63)
{
Caption="AH"
Type=1
link(Data,15923548:Var3,[(489,51)(455,51)(455,75)])
Primary=[9912768,-203,259]
}
Add(ScreenShort,1702941,637,273)
{
link(onCapture,8492355:doWork1,[(685,279)(685,237)(563,195)])
link(Handle,5616459:Value,[(643,261)(608,261)(608,394)(580,394)])
}
Add(HubEx,8492355,523,189)
{
Angle=3
link(onEvent,13631593:doLoad,[(527,111)])
}
Add(ArrayRW,12753063,350,350)
{
link(onRead,273378:doSearch,[])
link(Array,9292654:Var,[])
link(Index,11925794:Index,[(363,338)(328,338)(328,394)(293,394)])
}
Add(LineBreak,14330807,336,147)
{
Caption="AS"
Type=1
link(Data,14833197:Array,[])
Primary=[9292654,14,154]
}
Add(Timer,9989187,168,364)
{
Interval=50
Enable=1
link(onTimer,11872925:doEvent1,[])
}
Add(Switch,7361912,98,357)
{
Point(onOn)
Point(onOff)
link(onOn,9989187:doTimer,[])
link(onOff,14094907:doWork2,[])
}
Add(Hub,11872925,217,364)
{
link(onEvent1,12808415:In,[(243,370)(243,342)(198,342)(198,244)])
link(onEvent2,1563683:doWork,[(243,377)(243,437)(198,437)(198,496)])
}
Add(LineBreak,9192279,588,175)
{
Caption="CF"
link(Out,3211863:doWork3,[(659,181)])
Primary=[15237827,-238,280]
}
Add(Memory,5616459,574,350)
{
Point(Data)
link(onData,12814096:doWork3,[(620,356)])
}
Add(LineBreak,6096140,546,273)
{
Caption="A"
link(Out,12814096:doWork2,[])
Primary=[12808415,-329,-35]
}
Add(HubEx,12814096,616,273)
{
link(onEvent,1702941:doCapture,[])
}
Add(Check,1563683,210,490)
{
link(onEvent,6960274:doCompare,[(277,496)(277,461)])
}
Add(DoData,12678596,392,224)
{
link(onEventData,3437152:doEvent1,[(429,230)(429,230)])
link(Data,6804028:Var3,[(398,211)(461,211)(461,145)])
}
Add(Hub,3437152,436,224)
{
link(onEvent1,47616:doCapture,[(468,230)(468,216)])
link(onEvent2,290405:doWork2,[(536,289)(536,377)])
}
Add(DoData,16531488,525,420)
{
link(onEventData,290405:doWork3,[(566,426)])
link(Data,11925794:Item,[(531,401)(286,401)])
}
Add(HubEx,290405,562,371)
{
Angle=3
link(onEvent,5616459:doValue,[(566,356)])
}
Add(Hub,5977427,378,91)
{
link(onEvent1,14337503:doData,[(398,97)(398,55)])
link(onEvent2,26538:doRead,[])
}
Add(DoData,14337503,343,49)
{
link(onEventData,18876:doWork1,[(4,55)(4,62)])
link(Data,14833197:String,[(349,34)(314,34)(314,149)(335,149)])
}
Add(EventFromData,2526734,62,7)
{
link(onEvent,8699763:In,[])
}
Add(PictureStream,6814538,700,126)
{
FileName="1.jpg"
link(Bitmap,13631593:ImageBitmap,[(713,114)(641,114)(641,153)(601,153)])
}
Add(HubEx,3211863,655,161)
{
Angle=3
link(onEvent,6814538:doSave,[(659,139)])
}
Add(If_else,6960274,287,455)
{
Op2=Integer(1)
link(onTrue,15237827:In,[])
link(Op1,176617:Var,[])
}
Add(LineBreak,12916603,28,105)
{
Caption="FF"
Type=1
link(Data,18876:Var3,[(34,97)(31,97)])
Primary=[176617,259,322]
}
"Описание программы "

Cap5.exe - пятая стадия разработки захватчика-ретранслятора графики из окон OS Windows

Список в левой части окна программы это заголовки все окон и других объектов приравненных к ним.
(Анализа объектов пока нет так что выбирайте внимательно - ничего страшного не будет но прогу может аварийно закрыть )

Кнопка "->" - обновление списка (При запуске/Закрытии новых программ список автоматически не обновляется!)
Кнопка "Close" - пытается закрыть выбранное в списке окно
Кнопка "Hide" - пытается спрятать выбранное в списке окно
Кнопка "Show" - пытается показать спрятанное окно

Кнопка "Capture" - пытается захватить графику из окна выбранного в списке
(Интересный эффект: если не выбрано ничего(сразу после запуска утилиты ) захватывает весь десктоп )

Кнопка "Found" аналог "Capture" но с поиском по начальным буквам заголовка окна.
("По умолчанию" "WMR Str" для поиска окна WMRViewer )

Галка "Auto" включает динамический захват
Галка "FS" включает сброс динамического захвата в файл "1.Jpg" в текущем каталоге .
Галка "HTTP" включает сервер передачи файла "1.Jpg" по протоколу TCP/IP
(Да получилось малость тупое подобие "веб-интерфейса" по адресу http://127.0.0.1:178
что нужно для более стабильной работы с захваченным изображением для "главной программы - Truba_DS" из проекта "Цифровая оптика" )


Зачем вообще нужна такая докука ?
Просто есть написанная на "жестоких Сях ++" прога WMRViewer переписать быстро ее на паскале не представляется возможным, вот пришлось изобретать очередной "костыль" ... но как результат теперь можно обрабатывать изображение на моей "тяжелой базовой кибер-платформе" Truba_DS из проекта "Цифровая оптика"
.

Редактировалось 11 раз(а), последний 2019-08-16 14:01:21
карма: 1

0
Ответов: 865
Рейтинг: 12
#14: 2019-08-16 15:07:43 ЛС | профиль | цитата
Сделал "обход записи в файл" (то есть для работы "веб-сервера" можно не включать галку "FS") в программе захвата графики "в чужих окнах"

Но работает как-бы не медленнее чем с записью в файл ...

Интересно в чем дело ?

Add(MainForm,18141,123,140)
{
Left=310
Top=283
Width=738
Height=384
Caption="5.3"
Point(Close)
link(onCreate,18378:doEvent2,[(167,160)(167,132)(139,132)(139,104)])
link(Close,2526734:GetData,[(129,107)(110,107)])
}
Add(ChildPanel,18876,53,105)
{
@Hint=#32: Панель управления и "ВебСервер"|
@Color=255
link(onEvent1,18378:doEvent1,[(121,111)(121,97)])
link(onEvent2,87406:doEvent,[(111,116)(111,202)])
link(onEvent3,7361912:doSwitch,[(101,129)(101,286)(58,286)(58,461)])
link(Data1,5091049:Var,[(59,84)(48,84)])
link(Data2,2060452:Var,[(66,84)(69,84)])
AddHint(172,-68,196,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,73583,3,3)
{
EventCount=3
WorkCount=1
DataCount=3
VarCount=5
Width=904
Height=319
link(doWork1,16249923:doText,[(16,33)(16,188)])
link(Var1,16249923:Text,[(9,247)(32,247)])
link(Var2,1511723:Checked,[(16,267)(71,267)])
link(Var3,5759222:Checked,[(29,274)(153,274)])
link(Var4,11302169:Checked,[(36,283)(216,283)])
link(Var5,8840632:Position,[(45,294)(392,294)])
}
Add(Panel,68008,28,127)
{
Width=722
Height=55
Align=2
Font=[Arial,8,0,0,1]
Point(doColor)
}
Add(ChanelToIndex,32148,147,49)
{
Count=5
link(onIndex,73583:onEvent2,[(182,55)(182,16)])
}
Add(Button,41799,70,56)
{
Left=110
Top=5
Width=75
Font=[Arial,8,0,0,1]
Caption="Hide"
link(onClick,32148:doWork2,[])
}
Add(Button,60593,24,16)
{
Left=5
Top=5
Width=20
Font=[Arial,8,0,0,1]
Caption="->"
link(onClick,73583:onEvent1,[(131,9)])
}
Add(Button,13483,70,91)
{
Left=190
Top=5
Width=75
Font=[Arial,8,0,0,1]
Caption="Show"
link(onClick,32148:doWork3,[(121,97)(121,69)])
}
Add(Button,69494,70,21)
{
Left=30
Top=5
Width=75
Font=[Arial,8,0,0,1]
Caption="Close"
link(onClick,32148:doWork1,[(121,27)(121,55)])
}
Add(Button,9237645,70,133)
{
Left=265
Top=5
Caption="Capture"
link(onClick,32148:doWork4,[(131,139)(131,76)])
}
Add(Button,9149992,91,224)
{
Left=325
Top=5
Caption="Found"
link(onClick,32148:doWork5,[(139,230)(139,83)])
}
Add(Edit,16249923,26,182)
{
Left=390
Top=5
Width=110
Text="WMR Str"
}
Add(CheckBox,1511723,70,182)
{
Left=505
Top=5
Caption="Auto"
link(onCheck,73583:onEvent3,[(189,188)(189,23)])
}
Add(CheckBox,5759222,147,231)
{
Left=560
Top=5
Width=35
Caption="FS"
}
Add(FormatStr,12898161,798,70)
{
DataCount=1
Mask="HTTP/1.1 200 OK\r\nContent-Type: image/jpeg\r\nContent-Length: %1\r\nConnection: close\r\n\r\n"
Point(FString)
link(onFString,3322281:doWork,[])
link(Str1,73583:Data2,[(804,19)(147,19)])
}
Add(StreamConvertor,3708782,763,189)
{
Mode=6
Point(Data)
link(onResult,7108863:doWork,[])
link(Data,73583:Data1,[(769,37)(151,37)])
}
Add(TCP_Server,9120016,539,105)
{
Port=178
Point(doCloseAll)
link(onRead,1388064:doEvent1,[])
}
Add(Hub,1388064,693,105)
{
OutCount=3
link(onEvent1,12898161:doString,[(736,111)(736,76)])
link(onEvent2,3708782:doConvert,[(753,118)(753,195)])
link(onEvent3,9120016:doCloseAll,[(718,125)(718,167)(529,167)(529,132)])
}
Add(LineBreakEx,3322281,847,70)
{
Caption="send"
}
Add(LineBreakEx,14280256,476,119)
{
Caption="send"
Type=1
link(OnEvent,9120016:doSend,[])
}
Add(LineBreakEx,7108863,840,189)
{
Caption="send"
}
Add(CheckBox,11302169,210,238)
{
Left=608
Top=5
Caption="HTTP"
link(onCheck,15474801:doSwitch,[(317,244)(317,104)])
}
Add(Switch,15474801,329,98)
{
Point(onOn)
Point(onOff)
link(onOn,9120016:doOpen,[])
link(onOff,9120016:doClose,[])
}
Add(Label,6374807,322,245)
{
Left=50
Top=35
Width=56
Height=17
Caption="Quality Jpg"
}
Add(TrackBar,8840632,386,245)
{
Left=120
Top=25
Width=260
HintPosition=0
Max=100
Position=75
}
Add(InfoTip,1149765,462,49)
{
Info=#19:Как-бы веб-сервер |
Width=435
Height=193
}
END_SDK
Add(IndexToChanel,87406,308,196)
{
Count=5
Point(Index)
link(onEvent1,5901:doClose,[(394,202)(394,240)(445,240)(445,230)])
link(onEvent2,50041:doWork1,[])
link(onEvent3,50041:doWork2,[])
link(onEvent4,12678596:doData,[(386,242)(386,265)])
link(onEvent5,5459224:doEnum,[(368,254)(368,426)])
}
Add(MultiElementEx,494139,266,105)
{
@Hint=#24:Формирование списка окон|
@Color=43775
link(onEventData,52907:doAdd,[(376,111)(376,48)])
link(onFString,14833197:doAdd,[(334,118)(334,146)])
}
BEGIN_SDK
Add(EditMultiEx,7556502,21,21)
{
WorkCount=#6:doEnum|
EventCount=#11:onEventData|9:onFString|
link(doEnum,7059:doEnum,[(35,27)(35,55)])
}
Add(FormatStr,8535,175,49)
{
Mask="%1 - %2"
link(onFString,7556502:onFString,[(264,55)(264,34)])
link(Str2,7059:ClassName,[(188,39)(163,39)(163,117)(62,117)])
}
Add(WinEnum,7059,49,49)
{
VisibleOnly=1
Point(ClassName)
link(onFindWindow,2077:doEvent1,[])
}
Add(Hub,2077,91,49)
{
link(onEvent1,8535:doString,[])
link(onEvent2,5568525:doData,[])
}
Add(DoData,5568525,119,56)
{
link(onEventData,7556502:onEventData,[(241,62)(241,27)])
link(Data,7059:Handle,[(125,44)(95,44)(95,93)(55,93)])
}
END_SDK
Add(LineBreak,9717234,59,518)
{
@Hint=#29: Зашита от сбоя привыходе |
Caption="+Sheld"
link(Out,14094907:doWork3,[(127,524)])
Primary=[8699763,87,-476]
}
Add(StrList,52907,455,42)
{
}
Add(Hub,18378,151,91)
{
InCount=2
OutCount=3
link(onEvent1,52907:doClear,[(293,97)(293,55)])
link(onEvent2,14833197:doClear,[(228,104)(228,153)])
link(onEvent3,494139:doEnum,[])
}
Add(WinTools,5901,455,203)
{
link(Handle,6804028:Var2,[])
}
Add(ChanelToIndex,50041,406,203)
{
Count=4
link(onIndex,5901:doVisible,[])
}
Add(ChildPanelEx,14833197,371,140)
{
@Hint=#16:Список процессов|
@Color=85
link(onClick,5977427:doEvent1,[(411,146)(411,132)])
AddHint(-151,26,109,13,@Hint)
}
BEGIN_SDK
Add(EditMultiEx,8602565,21,21)
{
WorkCount=#5:doAdd|7:doClear|
EventCount=#7:onClick|
VarCount=#6:String|5:Array|
link(doAdd,74780:doAdd,[(35,27)(35,55)])
link(doClear,74780:doClear,[(35,34)(35,62)])
link(String,74780:String,[(27,165)(76,165)])
link(Array,74780:Array,[(44,192)(69,192)])
}
Add(Panel,656075,168,126)
{
Top=55
Width=240
Height=290
Align=1
}
Add(ListBox,74780,49,49)
{
Top=30
Width=274
Height=217
Align=5
Font=[Arial,8,0,0,1]
Point(String)
link(onClick,8602565:onClick,[(201,62)(201,27)])
}
END_SDK
Add(ArrayRW,26538,455,133)
{
link(Array,15923548:Var2,[])
}
Add(HubEx,14094907,123,469)
{
link(onEvent,9989187:doStop,[])
}
Add(Image,13631593,727,98)
{
Left=240
Top=55
Width=482
Height=290
Align=5
link(onClick,3211863:doWork2,[(768,104)(768,160)])
}
Add(ScreenShort,47616,619,203)
{
link(onCapture,8492355:doWork3,[(659,209)])
}
Add(GetDataEx,6804028,455,175)
{
link(Data,26538:Item,[])
}
Add(MultiElementEx,5459224,441,413)
{
@Hint=#12:Поиск строки|
@Color=5636095
link(Array,9912768:Var,[(447,385)(419,385)])
link(Target,9314218:Var,[])
link(Array1,9292654:Var,[(461,378)(496,378)])
link(onEvent,5616459:doValue,[(551,419)(551,321)])
AddHint(21,53,85,13,@Hint)
}
BEGIN_SDK
Add(EditMultiEx,3137153,21,21)
{
WorkCount=#7:doWork2|6:doEnum|
EventCount=#7:onEvent|
DataCount=#5:Array|6:Target|6:Array1|
Width=398
Height=235
link(doWork2,290405:doWork2,[(307,27)(307,142)])
link(doEnum,11925794:doEnum,[(34,61)(34,106)])
}
Add(Position,273378,196,100)
{
link(onSearch,14700487:doCompare,[])
link(Str,12753063:Item,[(202,85)(158,85)(158,144)(125,144)])
link(Target,3137153:Target,[(209,61)(62,61)])
}
Add(If_else,14700487,238,100)
{
Op2=Integer(1)
link(onTrue,16531488:doData,[(289,106)(289,176)])
}
Add(ArrayEnum,11925794,49,100)
{
link(onItem,12753063:doRead,[])
link(Array,3137153:Array,[(55,90)(48,90)])
}
Add(ArrayRW,12753063,119,100)
{
link(onRead,273378:doSearch,[])
link(Array,3137153:Array1,[(125,33)(68,33)])
link(Index,11925794:Index,[(132,88)(97,88)(97,144)(62,144)])
}
Add(DoData,16531488,294,170)
{
link(onEventData,290405:doWork3,[(335,176)])
link(Data,11925794:Item,[(300,151)(55,151)])
}
Add(HubEx,290405,331,136)
{
Angle=3
link(onEvent,3137153:onEvent,[(335,50)])
}
END_SDK
Add(LineBreak,688670,53,233)
{
Caption="FS+"
Type=1
link(Data,18876:Var1,[])
Primary=[9314218,395,103]
}
Add(GetDataEx,430544,756,506)
{
Angle=1
link(Data,7357075:Stream,[(811,511)])
}
Add(Hub,4729527,679,441)
{
OutCount=3
link(onEvent1,7357075:doClear,[(749,447)(749,468)])
link(onEvent2,11265600:doData,[(711,454)(711,608)])
link(onEvent3,14525780:doSaveToStream,[(742,461)(742,587)])
}
Add(GetDataEx,15923548,455,105)
{
link(Data,52907:Array,[(461,96)(475,96)])
}
Add(LineBreak,13637666,525,98)
{
Caption="AH"
Type=1
link(Data,15923548:Var3,[(531,86)(497,86)(497,110)])
Primary=[9912768,-112,238]
}
Add(ScreenShort,1702941,748,238)
{
link(onCapture,8492355:doWork1,[(817,244)(817,230)(695,188)])
link(Handle,5616459:Value,[(754,226)(719,226)(719,359)(691,359)])
}
Add(HubEx,8492355,655,182)
{
Angle=3
link(onEvent,13631593:doLoad,[(659,90)(710,90)(710,104)])
}
Add(LineBreak,1330563,81,158)
{
Caption="Q"
Type=1
link(Data,18876:Var5,[])
Primary=[415218,703,373]
}
Add(LineBreak,9340138,378,182)
{
Caption="AS"
Type=1
link(Data,14833197:Array,[])
Primary=[9292654,112,147]
}
Add(Timer,9989187,140,462)
{
Interval=50
Enable=1
link(onTimer,11872925:doEvent1,[])
}
Add(Switch,7361912,70,455)
{
Point(onOn)
Point(onOff)
link(onOn,9989187:doTimer,[])
link(onOff,14094907:doWork2,[])
}
Add(Hub,11872925,189,462)
{
link(onEvent1,12808415:In,[(215,468)(215,433)(177,433)(177,398)])
link(onEvent2,1563683:doWork,[(215,475)(215,535)(156,535)(156,594)])
}
Add(LineBreak,11005527,720,168)
{
Caption="CF"
link(Out,3211863:doWork3,[(791,174)])
Primary=[15237827,-377,385]
}
Add(Memory,5616459,685,315)
{
@Hint=#5:Буфер|
Point(Data)
link(onData,12814096:doWork3,[(731,321)])
AddHint(-82,-49,47,13,@Hint)
}
Add(LineBreak,1408269,657,238)
{
Caption="A"
link(Out,12814096:doWork2,[])
Primary=[12808415,-468,154]
}
Add(HubEx,12814096,727,238)
{
link(onEvent,1702941:doCapture,[])
}
Add(Check,1563683,168,588)
{
link(onEvent,4191104:doEvent1,[])
}
Add(DoData,12678596,434,259)
{
link(onEventData,3437152:doEvent1,[])
link(Data,6804028:Var3,[(440,246)(503,246)(503,180)])
}
Add(Hub,3437152,478,259)
{
link(onEvent1,47616:doCapture,[(556,265)(556,209)])
link(onEvent2,5459224:doWork2,[(504,272)(504,304)(399,304)(399,419)])
}
Add(LineBreak,8422573,74,183)
{
Caption="Ht"
Type=1
link(Data,18876:Var4,[])
Primary=[14418387,199,426]
}
Add(Hub,5977427,420,126)
{
link(onEvent1,14337503:doData,[(440,132)(440,90)])
link(onEvent2,26538:doRead,[])
}
Add(DoData,14337503,385,84)
{
link(onEventData,18876:doWork1,[(46,90)(46,111)])
link(Data,14833197:String,[(391,69)(356,69)(356,184)(377,184)])
}
Add(EventFromData,2526734,104,42)
{
link(onEvent,8699763:In,[])
}
Add(PictureStream,6814538,850,119)
{
FileName="1.jpg"
link(Bitmap,5605794:Var3,[(863,107)])
}
Add(HubEx,3211863,787,154)
{
Angle=3
link(onEvent,6814538:doSave,[(791,132)])
}
Add(If_else,6960274,273,553)
{
Op2=Integer(1)
link(onTrue,15237827:In,[])
link(Op1,176617:Var,[])
}
Add(LineBreak,4854913,67,212)
{
Caption="FF"
Type=1
link(Data,18876:Var3,[])
Primary=[176617,206,313]
}
Add(LineBreak,15638328,651,541)
{
Caption="St"
Type=1
link(Data,430544:Var1,[(657,511)])
Primary=[5091049,-609,-499]
}
Add(LineBreak,15273997,826,539)
{
Caption="Size"
Type=1
link(Data,7357075:Size,[(832,527)(818,527)])
Primary=[2060452,-763,-476]
}
Add(Hub,4191104,231,588)
{
link(onEvent1,6960274:doCompare,[(249,594)(249,559)])
link(onEvent2,8831304:doCompare,[(259,601)(259,643)])
}
Add(MemoryStream,7357075,805,455)
{
}
Add(Jpeg,14525780,777,567)
{
Quality=1
Point(doSaveToStream)
Point(Stream)
Point(doLoadFromBitmap)
Point(Quality)
link(Stream,430544:Var2,[(783,549)(762,549)])
link(Quality,415218:Var,[])
}
Add(DoData,11265600,728,602)
{
link(onEventData,14525780:doLoadFromBitmap,[(768,608)(768,594)])
link(Data,9846334:Var,[(734,592)(650,592)])
}
Add(GetDataEx,5605794,829,102)
{
Angle=3
link(Data,13631593:ImageBitmap,[(773,107)(773,146)(733,146)])
}
Add(LineBreak,5176461,623,455)
{
Caption="Http"
link(Out,4729527:doEvent1,[(668,461)(668,447)])
Primary=[3937622,-273,182]
}
Add(If_else,8831304,273,637)
{
Op2=Integer(1)
link(onTrue,3937622:In,[])
link(Op1,14418387:Var,[])
}
Add(InfoTip,15461493,595,413)
{
Info=#34:Подготовка данных для HTTP запроса|
Width=309
Height=256
}
Add(InfoTip,12460114,35,364)
{
Info=#36:Таймер для динамического обновления |
Width=295
Height=319
}
Add(InfoTip,13067335,588,56)
{
Info=#15:Захват графики |
Width=351
Height=312
}
Add(LineBreak,6913329,829,175)
{
Caption="BMP"
Type=1
link(Data,5605794:Var2,[])
Primary=[9846334,-185,392]
}
(Пробовал добавить поток на вызов блока "Подготовка данных для HTTP " но http-запросы могут приходить "не вовремя" )
Зы
Караул ! Форум опять "ест посты" (Отправляются через раз)

Редактировалось 4 раз(а), последний 2019-08-16 15:32:06
карма: 1

0
Ответов: 865
Рейтинг: 12
#15: 2019-08-19 12:59:52 ЛС | профиль | цитата
"Заставка из будущего" Hiasm in AR

Вообщем логотип Hiasm в WMR гарнитуре lenovo explorer недокументированный "режим HoloLens" (Ну почти) ...


Зы
Кстати в "Дополненной реальности" ХайАсм будет смотреться значительно более органично чем в виртуальной ...
(Кубики и связи схемы можно просто руками строить впрочем я уже писал об этом в теме Hiasm недалекого будущего... )
Но в первый раз мечта настолько близко !

Редактировалось 4 раз(а), последний 2019-08-19 14:51:06
карма: 1

0
15
Сообщение
...
Прикрепленные файлы
(файлы не залиты)