Проектирование видеонаблюдения
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Проектирование видеонаблюдения

Проектирование видеонаблюдения

Ответ
Поиск в этой теме
Непрочитано 30.07.2007, 13:38 #1
Проектирование видеонаблюдения
Ax3
 
Programming, automation, CADs, GISs. "Теплоком"
 
Россия, Санкт-Петербург
Регистрация: 02.02.2007
Сообщений: 306

Всем привет.
Не могу поверить: столько заданий - и все в автокаде. Счастье просто, дорвался, а то полгода не касался его почти. Пришел главный инженер - и...
Вот моя проблема:
Есть трехмерный план территории (несколько зданий).
Надо развесить видеокамеры и прикинуть обзор. Я решил видеокамеры (точнее, их обзор) обозначить в виде фигуры, приведенной на рисунке
[/img]
[ATTACH]1185787601.JPG[/ATTACH]
Надо как-то найти точки пересечения линий камеры с планом.
Не знаю, с чего начать. Есть ли функции, позволяющие найти точки пересечения линии с ближайшим к ней объектом? Или ну его на фиг, да вручную extend, trim? Но что-то очень уж не хочется каждый раз, меняя угол наклона, подрезать или подрастягивать линии для двадцати камер.
Подскажите, пожалуйста, с чего начать.
Просмотров: 9300
 
Непрочитано 30.07.2007, 18:41
#2
Andi55

инженер-электрик
 
Регистрация: 12.08.2005
Иркутск
Сообщений: 523
<phrase 1=


Это ж надо, а? Телесный угол обзора видеокамеры изображать как твердое тело и затем резать. Эх, коллега, не изобретай велосипед, для тебя сейчас ключевое слово - VideoCAD. Найди в Инете, главный инженер твой пусть заплатит 5тр и будет счастье тебе, инженеру и заказчику.
Andi55 вне форума  
 
Автор темы   Непрочитано 30.07.2007, 18:57
#3
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


понял, уже нашел. Спасибо.
Ax3 вне форума  
 
Автор темы   Непрочитано 30.07.2007, 18:59
#4
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Скачал демку - не очень-то здорово в нем план территории рисовать. Ну да ладно, может, и покатит.
Плюс ко всему - боюсь, мои труды стоят дешевле, чем видеокад...
Ax3 вне форума  
 
Автор темы   Непрочитано 31.07.2007, 13:12
#5
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Как и предполагалось, главный инженер сказал, что денег нет.
В результате появилась следующая вещь (только сильно не смейтесь).
>>Andi55
Пришлось-таки делать именно так, как ты сказал.
Проверено в AutoCAD2004_eng и AutoCAD2006_ru
[ATTACH]1185872474.rar[/ATTACH]
Все очень примитивно и до наглости тупо, зато быстро, дешево и сердито :cry: плакать или смеяться - даже не знаю.
Рекомендация: С настройками, сделанными в приложенном чертеже, все работает, а поскольку с этими самыми настройками в программе не хотелось возиться, лачше запускать приложение в приложенном (уже настроенном) чертеже.

Пока нам хватит для того, чтобы прикинуть ориентировочно.

Теперь главная проблема - как-то порезать созданные фигуры, обозначающие зону обзора видеокамеры. Чтобы они не протыкали обозреваемые объекты насквозь.

Если будут советы, рекомендации, отзывы - с удовольствием приму.

На всякий случай код (если кому лень качать):
Код:
[Выделить все]
(arxload "aclsobj.arx")
(arxload "acrender.arx")
;--------------------------------------------------------------------
(defun app_ini ()
	(if (not angleh) (setq angleh 12))
	(setq anglev (/ (* angleh 3) 4))
      (if (not dist_max) (setq dist_max 100))
	(setq angleh_ (/ (* 0.5 angleh pi) 180))
	(setq anglev_ (/ (* 0.5 anglev pi) 180))
	(setq app_ "_cam")
	(regapp app_)
      (setq xd_ (list (cons 1000 "x")));new xdata for ename1
      (setq xd_ (list (cons app_ xd_))) 
      (setq xd_ (cons -3 xd_))
)
;--------------------------------------------------------------------
(defun	c:cam ( / ss_ app_ einf_)
	(vl-cmdf "_ucs" "_save" "lastucs" "_yes")
	(vl-cmdf "_ucs" "_world")
	(setq pt0 (getpoint "\nУкажите точку вставки камеры"))
	(setq angleh (getreal "\nВведите горизонтальный угол обзора камеры: "))
	(setq dist_max (getreal "\nВведите максимальную дальность обзора: "))
	(app_ini)
	(setq x dist_max)
	(setq y (* dist_max (/ (sin angleh_) (cos angleh_))))
	(setq z (* dist_max (/ (sin anglev_) (cos anglev_))))
	(setq osnap_ (getvar 'osmode))
	(setvar 'osmode 0)
	(vl-cmdf "_ucs" "_move" pt0)
	(setq ss_ (ssadd))
	(vl-cmdf "_3dpoly" (list x y z) (list 0 0 0) (list x y (- z)) "_close")
	(vl-cmdf "_region" "_last" "")
	(setq einf_ (cons xd_ (entget (entlast))))
	(entmod einf_)
	(ssadd (entlast) ss_)
	(vl-cmdf "_3dpoly" (list x (- y) z) (list 0 0 0) (list x (- y) (- z)) "_close")
	(vl-cmdf "_region" "_last" "")
	(setq einf_ (cons xd_ (entget (entlast))))
	(entmod einf_)
	(ssadd (entlast) ss_)
	(vl-cmdf "_3dpoly" (list x y z) (list 0 0 0) (list x (- y) z) "_close")
	(vl-cmdf "_region" "_last" "")
	(setq einf_ (cons xd_ (entget (entlast))))
	(entmod einf_)
	(ssadd (entlast) ss_)
	(vl-cmdf "_3dpoly" (list x y (- z)) (list 0 0 0) (list x (- y) (- z)) "_close")
	(vl-cmdf "_region" "_last" "")
	(setq einf_ (cons xd_ (entget (entlast))))
	(entmod einf_)
	(ssadd (entlast) ss_)
	(setq rangh (getreal "\nВведите угол поворота камеры (относительно оси x мировой с.к. в гор. плоскости): "))
	(vl-cmdf "_rotate" ss_ "" (list 0 0 0) rangh)
	(setq rangv (getreal "\nВведите угол наклона камеры (относительно оси x мировой с.к. в верт. плоскости): "))
	(vl-cmdf "_ucs" "_new" "_zaxis" (list 0 0 0) (list 0 -1 0))
	(vl-cmdf "_rotate" ss_ "" (list 0 0 0) rangv)
	(vl-cmdf "_ucs" "_restore" "lastucs")
	(setvar 'osmode osnap_)
	(c:rmat "A" "green glass" ss_)
	(c:render)
)
;(vlax-add-cmd app_cmd_name 'app_func (strcat app_cmd_name "_loc") 1)
(defun	c:rch ( / ss_ kwd_)
	(setq ss_ (ssget '((-3 ("_cam")))))
	(vl-cmdf "_ucs" "_save" "lastucs" "_yes")
	(vl-cmdf "_ucs" "_world")
	(setq pt0 (getpoint "\nУкажите точку вставки камеры (уж извините, не успел сделать ее автоопределение :-(): "))
	(vl-cmdf "_ucs" "_move" pt0)
	(setq kwd_ "Y")
	(while (= kwd_ "Y")
		(progn
		(setq rangh (getreal "\nВведите угол поворота камеры (на сколько градусов повернуть относительно оси x мировой с.к. в гор. плоскости): "))
		(vl-cmdf "_rotate" ss_ "" (list 0 0 0) rangh)
		(c:render)
		(initget 1 "Y N")
		(setq kwd_ (getkword "\nПродолжить (Y/N)?<N>:"))
		)
	)
	(vl-cmdf "_ucs" "_restore" "lastucs")
)
(defun	c:rcv ( / ss_ kwd_)
	(setq ss_ (ssget '((-3 ("_cam")))))
	(vl-cmdf "_ucs" "_save" "lastucs" "_yes")
	(vl-cmdf "_ucs" "_world")
	(vl-cmdf "_ucs" "_new" "_zaxis" (list 0 0 0) (list 0 -1 0))
	(setq pt0 (getpoint "\nУкажите точку вставки камеры (уж извините, не успел сделать ее автоопределение :-(): "))
	(vl-cmdf "_ucs" "_move" pt0)
	(setq kwd_ "Y")
	(while (= kwd_ "Y")
		(progn
		(setq rangv (getreal "\nВведите угол наклона камеры (на сколько градусов наклонить относительно оси x мировой с.к. в верт. плоскости): "))
		(vl-cmdf "_rotate" ss_ "" (list 0 0 0) rangv)
		(c:render)
		(initget 1 "Y N")
		(setq kwd_ (getkword "\nПродолжить (Y/N)?<N>:"))
		)
	)
	(vl-cmdf "_ucs" "_restore" "lastucs")
)
;--------------------------------------------------------------------
Ax3 вне форума  
 
Автор темы   Непрочитано 31.07.2007, 17:00
#6
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Пришла в голову мысль использовать (vla-intersect-with), но в этом случае придется всю зону обзора (или хотя бы ее грани) строить из, допустим, сотни линий, для каждой из которых находить точку ее пересечения с территорией или объектами на ней и по необходимости обрезать. Громозко, но при двадцати камерах может, и получится. Всего-то четыреста линий на камеру Пока больше ничего не придумывается.
Ax3 вне форума  
 
Автор темы   Непрочитано 07.08.2007, 12:34
#7
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Случилось самое неожиданное и смешное: мы стали использовать эту прогу.
:shock: :shock: :shock: :shock:

Поэтому решил ее улучшить.
[ATTACH]1186475548.rar[/ATTACH]
Краткое описание.
Особенности версии:
1. Исправлены формулы расчета зоны обзора (в версии 1.0 была грубая ошибка).
2. Улучшено удобство работы с камерами (при клике на камеру она выделяется целиком).
3. Введены данные, прикрепляемые к каждой камере и отображаемые при клике на нее.
4. Автоопределение точки вставки камеры.
5. Лучше перед запуском rch, rcv предварительно выделять нужную камеру.
6. Пока не проработана нумерация камер.
7. Пока не введена возможность указания ориентации камеры (север, юг).
Поэтому приходится указывать углы поворота типа -172 и подобные. Неудобно.
8. В теме "error: exceeded maximum number of selection sets" на форуме dwg.ru
Кулик Алексей aka kpblc предложил вариант реактора, который планирую рассмотреть.
Ссылка на тему: http://dwg.ru/forum/viewtopic.php?p=164882#164882
9. Спецы по 3D, подскажите, какой тип объектов вместо region можно использовать,
чтобы обрезать его по границам зданий? плз! Короче, как сделать проекцию
прямоугольника на территорию и здания.
------------------------------------------------------------------
Программа протестирована в AutoCAD2006eng
------------------------------------------------------------------
Спасибо участникам форума dwg.ru:
Кулик Алексей aka kpblc
VVA
lokus
Fatty
kp+
AY
Alaspher
ShaggyDoc
за ответы на многие вопросы по ходу работы
------------------------------------------------------------------
P.S.
Пожалуйста, пишите свои отзывы и предложения, может, когда-нибудь
эта прога составит конкуренцию VideoCAD'у!
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 07.08.2007, 16:58
#8
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Версия 1.2. Исправил несколько ошибок.
Особенности версии:
1. Исправлено направление координаты х во время создания и редактирования камеры.
2. Устранены ошибки, связанные с progn (и о которых стыдно говорить )
[ATTACH]1186491526.rar[/ATTACH]
Проверено в AutoCAD2006eng.
Проверял также в русском, но там лисп почему-то ругался на неопределенность функции vlr-miscellaneous-reactor. странно...
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 07.08.2007, 18:33
#9
Netlog


 
Регистрация: 05.09.2005
Ростов на Дону
Сообщений: 71
<phrase 1=


Я подвешивал на месте видеокамеры источник света, и было сделано для разных объективов-матриц несколько заготовок с отверстиями подходящего размера, в которых свет проходил и освещал сцену только в тех местах, которые видит данная камера. Ну а потом - крути-верти картинку, обзор с камеры виден в нужных ракурсах.
Попутно получались плановые углы установки видеокамер.
Netlog вне форума  
 
Автор темы   Непрочитано 07.08.2007, 18:52
#10
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Ура!!! Спасибо, Netlog, это хорошее решение. Для меня самая главная проблема - это направление поиска, потому что в 3d я откровенно не силен. Скажи, плз, а источник света в акаде полностью прозрачен или его можно "окрасить", чтобы его лучи были видны, как лучи солнца в пыльном помещении?
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 08.08.2007, 15:13
#11
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Подвесил источник света внутрь коробки, созданной из пяти region'ов, материал - "gray matte".
У меня почему-то получается такая картина:
[ATTACH]1186571719.jpg[/ATTACH]
Почему вниз светит?
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 08.08.2007, 15:17
#12
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Источник света расположен в коробке (повторюсь, непрозрачной), можно посмотреть, скачав чертеж:
[ATTACH]1186571846.dwg[/ATTACH]
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 10.08.2007, 14:04
#13
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


С освещением разобрался. Оказывается, надо было выставить галочку Shadow volumes/Ray traced shadows.
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 29.08.2007, 12:10
#14
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Теперь другая проблема.
При создании или модификации источника света в акаде можно в Shadow options выставить галочку Shadow volumes/Ray traced shadows.
А вот при программном создании источника света я добился только такого варианта:
Код:
[Выделить все]
(c:light "NP" "cam" 20000 pt0 nil (list 0.0 1.0 0.0) 128 nil nil 1.0 "on" 2 ss1_)
При этом у меня получается Shadow map size 128, Shadow softness 1, выбраны shadow bounding objects, а вот параметра, который включает галочку Shadow volumes/Ray traced shadows в списке параметров c:rmat я не нашел. Неужели не предусмотрено?
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 29.08.2007, 16:09
#15
Andi55

инженер-электрик
 
Регистрация: 12.08.2005
Иркутск
Сообщений: 523
<phrase 1=


Да, можно бы позавидовать таким изысканиям, а вот мне хозяин столько времени не дает. За месяц от начала темы можно сделать было два объекта среднего пошиба в виде стадии РП листов на 25 и камер на 20-30, Заказчика ублажить да принести папику в клювике тыщ 150 безнальных рубликов, с них и зарплаточку в 15-20% поиметь и какую-никакую программочку прикупить. Жаль, объекты такие редки...
Andi55 вне форума  
 
Автор темы   Непрочитано 29.08.2007, 16:29
#16
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306



Скажем, проект мы уже давно сдали, а программу я щас делаю на добровольных началах во время ночных бессонниц Интереса ради и опыта для...
ЗЫ. И даже в отпуске не могу спать спокойно :-)
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 30.08.2007, 15:46
#17
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Вот новая версия, номер 1.3. Благодарности все те же плюс
>Хмурый
Спасибо за подсказки в области 3д.
>AY
Спасибо за подсказки насчет фильтрации по расширенным данным.

Программа ужасно громоздкая и тормозная. В Архикаде все то же самое можно сделать в две секунды. Но надеюсь, благодаря вашим советам и отзывам удастся и дальше ее совершенствовать, потому что в акаде все-таки возможностей и удобства больше, чем в видеокаде или архикаде. Все инструкции в текстовом файле.
Вот архив:
[ATTACH]1188474370.rar[/ATTACH]
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 30.08.2007, 15:57
#18
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Ну и пара скриншотов.
[ATTACH]1188475054.GIF[/ATTACH]
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 30.08.2007, 15:58
#19
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Еще
[ATTACH]1188475105.GIF[/ATTACH]
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 30.08.2007, 15:59
#20
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


... и еще
[ATTACH]1188475157.GIF[/ATTACH]
__________________
На LISPе можно мыслить!
Ax3 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Проектирование видеонаблюдения