Автор Тема: Знатоки Python, нужна помощь  (Прочитано 14586 раз)

Оффлайн Barabashka

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #105 : 12 Февраль 2017, 18:30:43 »
А почему файл не скачиваешь из сообщения #99? Уже охладел и стало неинтересно?
Извините, просмотрел. Скачал, посмотрю.

Оффлайн Barabashka

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #106 : 12 Февраль 2017, 18:50:02 »
Я с трудом понимаю чего ты хочешь в итоге добиться, и для чего это нужно. Достаточно смутно и витиевато формулируешь свои задачи и выражаешь мысли. Рисуй наброски и схемы от руки и выкладывай картинки, чтобы  твои соображения и идеи были более понятны и конкретизированы, а не выглядели смутно и расплывчато...
Я же писал: "для меня это занятие что-то вроде решения ребуса - пользы никакой, а удовольствия море".
О цели которую я себе сейчас поставил: разобраться с возможностью использования нескольких камер и создания зеркал, как плоских, так выпуклых, вогнутых, хаотично изогнутых (кривых зеркал). Пока топчусь вот на использовании двух камер (а хотелось бы трёх, или пяти), да и то, как видите, поменять назначение камер, даже двух, никак не осилю.
Цитировать
Игру воплотить - это относительно просто. Гораздо сложней - придумать интересную игру :) Хороших гейм-дизайнеров не так много...и он не обязан знать программирование, но должен внятно уметь изложить правила (логику) игры :)
Совершенно верно, сейчас каждый имеет фото и кинокамеру в телефоне, однако классный видео или фото сюжет очень не многим под силу.
Ну, а знание великого и могучего не означает владение им на уровне Тургенева или Толстых, что Льва, что Алексея. Хотелось бы так владеть, но и здесь "не по Сеньке шапка". Технарь я, и есть технарь.

Оффлайн Barabashka

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #107 : 12 Февраль 2017, 21:27:26 »
А почему файл не скачиваешь из сообщения #99? Уже охладел и стало неинтересно?
Извините, просмотрел. Скачал, посмотрю.
Samovar, я посмотрел, только то что вы предлагаете у меня у самого получается, а вот это: https://cloud.mail.ru/public/EXRW/pSbvAvcKY та картинка которую я вам отсылал в #53. Я её состряпал в Paint.
Я хочу понять как можно достичь подобного эффекта, т.е. какую я камеру захотел, такую камеру и установил как главную камеру сцены с крупными объектами заполняющую всё окно, а другую (другие), как второстепенные камеры вне зависимости от масштаба на них изображений, но находящиеся поверх вида из главной камеры и занимающие маленькие поверхности экранов или одного и того же экрана с переключением.
На моём рисунке поверх изображения в красной рамке наложено изображение в серой рамке. Изображения с разным разрешением и масштабом.
В вашем варианте вы исключили изображение из камеры Cam2, а именно оно должно быть в маленьком окошке SecurityMonitor.
Я посмотрел поверхностно, особо не вникая пока, но вот у меня почему-то в отосланном вам файле второе изображение вообще не появлялось в результате моих "доработок". Не посмотрите в чём причина?
« Последнее редактирование: 12 Февраль 2017, 21:48:59 от Barabashka »

Оффлайн Samovar

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #108 : 12 Февраль 2017, 21:28:37 »
Цитировать
Совершенно верно, сейчас каждый имеет фото и кинокамеру в телефоне, однако классный видео или фото сюжет очень не многим под силу.
Ну, а знание великого и могучего не означает владение им на уровне Тургенева или Толстых, что Льва, что Алексея. Хотелось бы так владеть, но и здесь "не по Сеньке шапка". Технарь я, и есть технарь.
Наоборот. Если ты технарь, так и выражайся техническим языком, прилагая технические рисунки, чертежи и схемы... Что неясно?

Оффлайн Samovar

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #109 : 12 Февраль 2017, 22:14:52 »
Цитировать
Я хочу понять как можно достичь подобного эффекта, т.е. какую я камеру захотел, такую камеру и установил как главную камеру
Я думал, что у тебя есть понимание, как в Блендере установить главную (активную) камеру.
Выделяешь камеру  (можно и любой объект :) )и жмёшь {Ctrl+Num0}. В последствии, нажатие клавиши {Num0} приводит к виду из главной (т.е. активной камеры).

Префикс "Num" означает, что клавиша расположена на клавиатуре справа, на цифровой дополнительной клавиатуре, которая имитирует калькулятор .

Оффлайн Barabashka

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #110 : 12 Февраль 2017, 22:24:15 »
Цитировать
Я хочу понять как можно достичь подобного эффекта, т.е. какую я камеру захотел, такую камеру и установил как главную камеру
Я думал, что у тебя есть понимание, как в блендере установить главную (активную) камеру.
Выделяешь камеру  (можно и любой объект :) )и жмёшь {Ctrl+Num0}
Samovar, давайте завтра разберёмся с камерами - на свежую голову. Я пишу не о выделении во время редактирования, а о скрипте, ведь там активируется у меня камера, и там же определяется какое изображение, как, и где отображать.

Оффлайн Samovar

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #111 : 12 Февраль 2017, 23:02:53 »
Специально поменял на простые названия, что бы ты врубился... и комментарии свои написал...

Код
### Рендер в текстуру ###
import bge                              # импортировать модуль bge
scene = bge.logic.getCurrentScene()     # получить текущую сцену
objList = scene.objects                 # получить список объектов в сцене
cont = bge.logic.getCurrentController() # получить текущий контроллер
obj = cont.owner                        # получить объект-владелец этого контроллера с этим скриптом
       
if "R" in obj:                        # если существует атрибут "R"  в объекте-владельце
    m = obj["R"]                  # передаём указатель на буфер из текстуры "R"
    m.refresh(True)                   # обновляем буфер
else:                                   # Инициализация (первое обращение), если  атрибут "R" не был создан в объекте-владельце
    name = "C"                       # переменной присваиваем имя объекта камеры-источника
    cam = objList[name]               # получаем указатель на камеру-источник из списка всех камер в сцене
    matID = bge.texture.materialID(obj, "MAs")    # получаем указатель на материал в котором содержится текстура
    r = bge.texture.Texture(obj, matID) # создаём объект-указатель на буфер
    r.source = bge.texture.ImageRender(scene,cam) # указываем откуда в объект (буфер) будет отображаться текстура
    obj["R"] = r                    #  делаем текстуру с именем "R"  буфером


Кстати, эти две строчки непонятно почему сделаны через переменную:
Код
    name = "C"                       # переменной присваиваем имя объекта камеры-источника
    cam = objList[name]               # получаем указатель на камеру-источник из списка всех камер в сцене
Можно сделать одной строкой:
Код
 cam = objList["C"]               # получаем указатель на камеру-источник из списка всех камер в сцене
« Последнее редактирование: 12 Февраль 2017, 23:44:45 от Samovar »

Оффлайн Samovar

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #112 : 13 Февраль 2017, 03:22:13 »
Оффтоп: Самое смешное, что сейчас относительно просто создать аналоги этих игр на Блендере с тем же качеством виза (он не особо важен), но сохраняя их играбельность. Но я не видел попыток даже...
https://youtu.be/SOaDfNdpZJs
https://youtu.be/fIWLT0QVPzw

Оффлайн Barabashka

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #113 : 13 Февраль 2017, 15:55:08 »
Специально поменял на простые названия, что бы ты врубился... и комментарии свои написал...
........................
Samovar, уточняю свою проблему. В вашем предложении "Области просмотра 2 (6).blend" всё зависит от того при какой активной камере в окне 3D запускать игру. Установите поочерёдно вид из камеры "С", "Cam2", "SecurityCam" и запустите игру, увидите сами. Потому для указания активной камеры я в 8 и 9 строках вашей версии добавил строки определяющие камеры:

camScene = objList["SecurityCam"]      # получить камеру по названию SecurityCam
cam = objList["Cam2"]                   # получить камеру по названию Cam2

В 11 и 12 строках устанавливая и снимая комментарий (#), думаю, что можно определить камеру сцены, заполняющую всё окно.

scene.active_camera = cam          # активировать камеру cam

Т.е. ухожу от того, из какого вида (какой камеры) запускается игра, и вынуждаю её работать с активной камерой "Cam2". В результате в сером окне получаю общий вид, а в красном окне получил крупно объект «Куб». Почти то, что ищу.
В надежде, что сняв комментарии в строках 11 и 21 и установив их в строках 12 и 20, у меня получится вид в красной рамке во всё окно, а вид в серой рамке станет в правом углу изображением SecurityMonitor’а.
Но вот второй день топчусь на этом месте и никак не пойму что я не учитываю, почему в этом случае изображения SecurityMonitor’а вообще в окне нет?
Почему SecurityMonitor «с удовольствием» воспроизводит отображение SecurityCam и отказывается воспроизводить отображение Cam2?
https://cloud.mail.ru/public/27Ue/yFyn8gsSP

Оффлайн Samovar

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #114 : 13 Февраль 2017, 19:36:44 »
Да вроде всё работает...

Оффлайн Barabashka

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #115 : 13 Февраль 2017, 21:19:36 »
Да вроде всё работает...
Samovar, вы кудесник. Да, это то, что я ищу, однако получилась зацикленность окон в правом верхнем углу. Окна отмеченные стрелками не нужны, как можно от них избавиться?

Оффлайн Samovar

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #116 : 13 Февраль 2017, 21:29:04 »
Просто удали плоскость с материалом в который рендерится текстура у камеры с серой рамкой, или перемести её в другой слой, который не отображается. Или отключи ее видимость при запуске игры с помощью актуатора Visiblity. Можешь это и на клавиши какие нибудь повесить... вариантов полно.
Пример (клавиши {1} и {2}):
« Последнее редактирование: 13 Февраль 2017, 21:52:07 от Samovar »

Оффлайн Barabashka

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #117 : 13 Февраль 2017, 21:58:48 »
Просто удали плоскость с материалом в который рендерится текстура у камеры с серой рамкой, или перемести её в другой слой, который не отображается. Или отключи ее видимость при запуске игры с помощью актуатора Visiblity.
Здорово, однако ничего не понятно. Как это удалить плоскость, ведь предметы просто в пропасть полетят?
Отключить при запуске? Но в процессе игры именно она отображает всю сцену и все перемещения на ней, а не одного участника как камера с красной рамкой.
Камера с серой рамкой не должна зацикливаться. Ведь получается что она сама свое отображение видит и потому зацикливается как зеркала стоящие друг против друга. И тем более непонятно, в какой строке это вынуждается?

Оффлайн Barabashka

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #118 : 14 Февраль 2017, 08:58:43 »
Samovar, всё-таки мне непонятно. Есть два кода ваш и моя его интерпретация - ваш код:
if "R" in obj:         
    r = obj["R"]       
    r.refresh(True)     
else:                   
    camScene = objList["Cam2"]              
    cam = objList["SecurityCam"]           
    scene.active_camera = cam
               
    matID = bge.texture.materialID(obj, "MAs")   
    r = bge.texture.Texture(obj, matID) 
    r.source = bge.texture.ImageRender(scene,camScene)
    obj["R"] = r
и моя интерпретация:
camScene = objList["Cam2"]
cam = objList["SecurityCam"]
scene.active_camera = cam

if "R" in obj:          # если текстура R создана
    r = obj["R"]        # передать в переменную r текстуру R
    r.refresh(True)     # обновлять текстуру из переменной r
else:                   # если текстура R не создана в объекте
    matID = bge.texture.materialID(obj, "MAs")
    r = bge.texture.Texture(obj, matID)
    r.source = bge.texture.ImageRender(scene,cam)
    obj["R"] = r
Различие в том что вы строки:
    camScene = objList["Cam2"]              
    cam = objList["SecurityCam"]           
    scene.active_camera = cam
 
ставите в условие только для поиска начальной текстуры, а у меня установка камер идёт постоянно, поскольку она стоит до условия.
Казалось бы мой подход вернее, надёжнее, но он не работает.
Почему эти строки необходимы только в момент отсутствия текстуры и не нужны в момент наличия текстуры?

Оффлайн Samovar

  • Житель
Re: Знатоки Python, нужна помощь
« Ответ #119 : 14 Февраль 2017, 15:53:35 »
Цитировать
Здорово, однако ничего не понятно. Как это удалить плоскость, ведь предметы просто в пропасть полетят?
Я не эту плоскость имел ввиду, а одну из тех, в которые рендерится картинка из указанной в скрипте камеры-источника.

 


Яметрика

* По форуму

* Рекламный блок

* Последние вложения

1 (1).png
Скачано: 2239
Автор: LEXA ANЭGROWND
blender.png
Скачано: 2246
Автор: ipv2007
4.png
Скачано: 2271
Автор: hiroyukiss
2.png
Скачано: 2281
Автор: hiroyukiss

Скачано: 2282
Автор: Dilifa12