www.boolean.name

www.boolean.name (http://forum.boolean.name/index.php)
-   Godot (http://forum.boolean.name/forumdisplay.php?f=181)
-   -   Вопросы (http://forum.boolean.name/showthread.php?t=20848)

MadMedic 03.10.2020 11:24

Вопросы
 
Первонах ! Тупой вопрос. Как завершить программу? end не работает

Randomize 03.10.2020 11:58

Ответ: Вопросы
 
Цитата:

Сообщение от MadMedic (Сообщение 317661)
Как завершить программу? end не работает

PHP код:

func _notification(what):
    if 
what == MainLoop.NOTIFICATION_WM_QUIT_REQUEST:
        
get_tree().quit() # default behavior 

https://docs.godotengine.org/en/late..._requests.html

MadMedic 03.10.2020 15:59

Ответ: Вопросы
 
Благодарю!

mingw 06.10.2020 17:41

Ответ: Вопросы
 
жесть!

ant0N 06.10.2020 18:50

Ответ: Вопросы
 
Цитата:

Сообщение от mingw (Сообщение 317688)
жесть!

PHP код:

public override void _Process(float delta)
{
    if (
Input.IsActionPressed("exit")
    {
        
GetTree().Quit();
    }


Так лучше?

mingw 07.10.2020 23:55

Ответ: Вопросы
 
Что это за дерево у которого вызывается метод Quit ?

ant0N 08.10.2020 00:24

Ответ: Вопросы
 
Цитата:

Сообщение от mingw (Сообщение 317693)
Что это за дерево у которого вызывается метод Quit ?

Если кратко, GetTree() возвращает SceneTree, а это основной цикл (Main Loop) сцены.
Если подробно - https://docs.godotengine.org/en/stab...l#introduction

Arton 11.10.2020 10:27

Ответ: Вопросы
 
Что такое Mesh Texture?
Почитал поискал, ничего не понял.
Что это и как правильно "готовить"?

Думал могу свой меш в WorldEnvironment загрузить как небо, оказалось все не так.

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

ant0N 11.10.2020 15:29

Ответ: Вопросы
 
Вложений: 2
Цитата:

Сообщение от Arton (Сообщение 317726)
Что такое Mesh Texture?
Почитал поискал, ничего не понял.
Что это и как правильно "готовить"?

Единственное практическое применение для него которое мне известно это TextureAtlas
При создании атласа можно выбрать Mesh2D

И тогда текстуры будут храниться как Mesh2D. А для чего нужен Mesh2D, я думаю понятно.



Цитата:

Сообщение от Arton (Сообщение 317726)
Что вообще можно засунуть в стандартное небо, по мимо карты окружения?

А какую задачу ты решаешь? Что хочешь получить?

Arton 12.10.2020 00:37

Ответ: Вопросы
 
Вложений: 1
Цитата:

Сообщение от ant0N (Сообщение 317727)
Единственное практическое применение для него которое мне известно это TextureAtlas
При создании атласа можно выбрать Mesh2D

Понятно, спасибо.

Цитата:

Сообщение от ant0N (Сообщение 317727)
А какую задачу ты решаешь? Что хочешь получить?

«Небо», когда окружение локации, домики, горы вдали делают одним мешем и ставят ему ордер рендера первым.

Но с порядком рендера, в Годо проблемы.

Обычный флаг No Depth Test годится только для простой геометрии.
Всё что сложнее куба/сферы начинает просвечивать сквозь себя.


Альтернатива, использовать флаг прозрачности, у них своя сортировка.
Но с прозрачностью могут не работать некоторые эффекты.

И в добавок, в обоих случаях надо не забывать проставлять флаги каждому материалу участвующему в сцене, иначе не будет работать.

WorldEnvironment видимо отдельно обрабатывается, думал к нему не только текстуру можно подключить.

Но ладно, чёрт с ним с небом, не так важно, а если мне нужно в FPS что-то поверх рендерить принципиально?

Слишком заморочено.
С грустью вспоминаю Блиц, с его EntityOrder.

Ещё я читал предложения рендерить в спрайт, рендерить с поддельной глубиной... :(

P. S. Где можно достать скомпилированный Godot 4? А то я только на исходники натыкаюсь, хочу потыкать его.

P. P. S. Кстати, как полная альтернатива (только для окружения), можно всё рендерить в текстуру и натягивать на небо.
Давно видел способ для псевдо-2D персонажа, по логике тут тоже самое.

ant0N 12.10.2020 12:05

Ответ: Вопросы
 
Цитата:

Сообщение от Arton (Сообщение 317728)
«Небо», когда окружение локации, домики, горы вдали делают одним мешем и ставят ему ордер рендера первым.

Как вариант можно поставить материалу флаг "Fixed Size". Вроде это то что тебе нужно.

Цитата:

Сообщение от Arton (Сообщение 317728)
С грустью вспоминаю Блиц, с его EntityOrder.

Да, прошли те времена. Игры стали сложнее, движки должны не отставать.

Цитата:

Сообщение от Arton (Сообщение 317728)
P. S. Где можно достать скомпилированный Godot 4? А то я только на исходники натыкаюсь, хочу потыкать его.

Вот "ночные сборки" от чувака, который на днях перешел в штат разработчиков годо
https://hugo.pro/projects/godot-builds/

MadMedic 16.10.2020 09:54

Ответ: Вопросы
 
Вложений: 2
Всем привет!
Делаю генератор планет,
Нужен совет.

Короче есть программно рисуемая картинка при помощи следующего кода
Код:

WorldMapImage.lock()
...
WorldMapImage.set_pixel(TileX, TileY, DrawColor)
...
WorldMapImage.unlock()

Как сверху на эту картинку нарисовать другую, с выбранной прозрачностью? (например, полностью непрозрачно или еле-еле видно)

Рассматриваю вариант - сверху создать еще один гаждет и рисовать облака тупо поверх, но хотелось бы узнать, как рисовать картинку на картинку



pax 16.10.2020 14:25

Ответ: Вопросы
 
Если есть функция get_pixel, то можно использовать классическую функцию смешивания по альфе:

Result = CurrentColor * (1 - Alpha) + NewColor * Alpha

где CurrentColor - текущий цвет пикселя текстуры
NewColor - цвет рисуемого пикселя
Alpha - прозрачность рисуемого пикселя

Функцию применить для каждого компонента цвета ( RGB ):

ResultR = CurrentColorR * (1 - Alpha) + NewColorR * Alpha
ResultG = CurrentColorG * (1 - Alpha) + NewColorG * Alpha
ResultB = CurrentColorB * (1 - Alpha) + NewColorB * Alpha

Если смешивание идет в целых числах (0..255), то единицу заменить на 255

MadMedic 16.10.2020 17:38

Ответ: Вопросы
 
Цитата:

Сообщение от pax (Сообщение 317766)
Если есть функция get_pixel, то можно использовать классическую функцию смешивания по альфе:
...

Как вариант, и очень даже неплохой для данной ситуации, да, спасибо!
Но есть наверняка элегантный способ рисовать картинками на картинках.

pax 16.10.2020 22:25

Ответ: Вопросы
 
Цитата:

Сообщение от MadMedic (Сообщение 317767)
Как вариант, и очень даже неплохой для данной ситуации, да, спасибо!
Но есть наверняка элегантный способ рисовать картинками на картинках.

На любом движке наверное можно такое сделать:
1. Сделать рендертекстуру размером с исходную.
2. Сделать ее активным рендер таргетом.
3. Нарисовать полноэкранный квад с исходной текстурой с unlit шейдером. Обычно есть метод Blit или подобный.
4. Нарисовать квад с оверлей текстурой и нужным смешиванием (для этого сделать шейдер с альфаблендом или другим способом смешивания).
5. Считать пиксели рендертекстуры в исходную.

Но так как задача поставлена с примером записи пикселей в текстуру, я предложил другой метод.


Часовой пояс GMT +4, время: 16:26.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Перевод: zCarot