forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Помогите с травой (http://forum.boolean.name/showthread.php?t=19873)

ABTOMAT 23.06.2015 10:23

Ответ: Re: Ответ: Re: Помогите с травой
 
Цитата:

Сообщение от Max Payne (Сообщение 296876)
Не расскажешь по подробнее как это сделать?

Там же рядом с ней написано, как ею пользоваться:

Цитата:

;Specify an image which will be used to determine where grass will be placed on the terrain. Black pixels
;will result in no grass at that location, while white pixels will result in full grass density.
Function BG_SetGrassMap(Layer, MapFile$)

Max Payne 23.06.2015 14:53

Re: Ответ: Re: Ответ: Re: Помогите с травой
 
Цитата:

Сообщение от ABTOMAT (Сообщение 296877)
Там же рядом с ней написано, как ею пользоваться:

Написано понятно как это работает. Жалко что я не понимаю пока как это сделать.

1) что за (Layer) ?
2) куда грузить черно белую картинку ? в Img = LoadImage(MapFile) вместо MapFile указать путь?

3) какой командой выводить все это на экран ? BG_Update(camera) ?

Function BG_SetGrassMap(Layer, MapFile$)
em.BG_GrassLayer = Object.BG_GrassLayer(Layer)
Img = LoadImage(MapFile)
Width = ImageWidth(Img)-1
Height = ImageHeight(Img)-1
Buff = ImageBuffer(Img)

LockBuffer Buff

For x = 0 To 255
For y = 0 To 255
rgb = ReadPixelFast(255*x/Width, Height-(255*y/Height), Buff)
density = (rgb Shr 8) And $FF
BG_sysArraySet(em\GrassMap, x, y, density)
Next
Next

Arton 23.06.2015 14:55

Ответ: Помогите с травой
 
Кстати ты зря поставил пивот вместо камеры: BG_Update(camera).
Идея реалтаймовой визуализации, вблизи высокая детализация, вдали низкая или вовсе удаляем ненужное, это один из краеугольных камней.
Тут трава работает так же. В обновление задаёшь точкой отрисовки камеру. Как бы ты не перемещал камеру, трава всегда будет "бегать" за ней.

P. S. Как там маску использовать и по террайну траву разложить, тоже не понял :-)

Артем Валерьевич 23.06.2015 18:38

Ответ: Помогите с травой
 
так если ты аааааааа... Даже если тебе разжуют и в рот наложат, то это тебе не поможе

L-ee-X 23.06.2015 20:05

Ответ: Помогите с травой
 
Такие темы нужно проходить мимо :-D

Владислав 24.06.2015 03:06

Ответ: Помогите с травой
 
Автор, тебе сейчас не потянуть игру, где бы требовалась трава, да и нафиг она нужна. Чтобы вешать гирлянду, нужна елка

А вообще я проходил мимо, поржать над названием темы :D

L-ee-X 24.06.2015 08:36

Ответ: Помогите с травой
 
Ну да, название темы просто заставляет поржать :- D помогите с травой :-D

St_AnGer 24.06.2015 12:33

Ответ: Помогите с травой
 
И в этом вся булка :-) двое попытались помочь, остальные просто мимокрокодилы :-)

L-ee-X 24.06.2015 13:08

Ответ: Помогите с травой
 
Цитата:

Сообщение от St_AnGer (Сообщение 296922)
И в этом вся булка :-) двое попытались помочь, остальные просто мимокрокодилы :-)

Ну ему дали дельный совет, изучить все функции и прочитать коменты к ним. Там же все расписано. Правильно выше написали, если он ааааааа... То даже разжував и положив в рот это не поможет :)

Arton 24.06.2015 14:10

Ответ: Помогите с травой
 
А третьи начинают флуд.


Max Payne, если ты что-то сделать хочешь, то тебе надо не с травой разбираться, а учить программирование. Я начинал точно так же с копипасты и ничем хорошим это не кончилось.

Во-первых, Булка, этот форум, здесь по Blitz3D можно найти практически все ответы.
Во-вторых, blitzetc.ru.
Пакет примеров от Шталкера кажется.
Сам блиц, самой последней версии.
Русский help, там есть лишние файлы, но думаю разберёшься. Надо скопировать в папку с блицем и заменить.

Насчёт функции. Функция это когда (к примеру, подробности см. ниже ) код который нужно выполнять множество раз, скрываешь за одно командой. Красным помечена команда, которую добавляет программист, остальное "обёрнутый" код:
Код:

;Layer и MapFile$ параметры передаваемые в функцию

Function BG_SetGrassMap(Layer, MapFile$) ;Начало функции

;Код который без функции протребовалось бы писать 100500 раз (индусский код)
        em.BG_GrassLayer = Object.BG_GrassLayer(Layer)
        Img = LoadImage(MapFile)
        Width = ImageWidth(Img)-1
        Height = ImageHeight(Img)-1
        Buff = ImageBuffer(Img)
       
        LockBuffer Buff
       
        For x = 0 To 255
        For y = 0 To 255
                rgb = ReadPixelFast(255*x/Width, Height-(255*y/Height), Buff)
                density = (rgb Shr 8) And $FF
                BG_sysArraySet(em\GrassMap, x, y, density)
        Next
        Next
       
        UnlockBuffer Buff
End Function ;Конец функции


Max Payne 24.06.2015 14:28

Re: Помогите с травой
 
Большое спасибо за помощь. с травой я разобрался.

Артем Валерьевич 24.06.2015 16:25

Ответ: Помогите с травой
 
ну как , всю скурил?

L-ee-X 24.06.2015 17:21

Ответ: Помогите с травой
 
Цитата:

Сообщение от Arton (Сообщение 296927)
А третьи начинают флуд.


Max Payne, если ты что-то сделать хочешь, то тебе надо не с травой разбираться, а учить программирование. Я начинал точно так же с копипасты и ничем хорошим это не кончилось.

Во-первых, Булка, этот форум, здесь по Blitz3D можно найти практически все ответы.
Во-вторых, blitzetc.ru.
Пакет примеров от Шталкера кажется.
Сам блиц самой последней версии.
Русский help, там есть лишении файлы, но думаю разберёшься. Надо скопировать в папку с блицем и заменить.

Насчёт функции. Функция это когда код который нужно выполнять множество раз, скрываешь за одно командой. Красным помечена команда, которую добавляет программист, остальное "обёрнутый" код:
;Layer и MapFile$ параметры передаваемые в функцию

Function BG_SetGrassMap(Layer, MapFile$) ;Начало функции

;Код который без функции протребовалось бы писать 100500 раз (индусский код)
em.BG_GrassLayer = Object.BG_GrassLayer(Layer)
Img = LoadImage(MapFile)
Width = ImageWidth(Img)-1
Height = ImageHeight(Img)-1
Buff = ImageBuffer(Img)

LockBuffer Buff

For x = 0 To 255
For y = 0 To 255
rgb = ReadPixelFast(255*x/Width, Height-(255*y/Height), Buff)
density = (rgb Shr 8) And $FF
BG_sysArraySet(em\GrassMap, x, y, density)
Next
Next

UnlockBuffer Buff
End Function ;Конец функции

Чуть чуть не правильное у Вас понятие о функции. Она не обязательно в Blitz3D делается только из-за того чтоб код 100500 раз не писать.

Фу́нкция в программировании — поименованный фрагмент программного кода (подпрограмма), к которому можно обратиться из другого места программы. С именем функции неразрывно связан адрес первой инструкции (оператора), входящей в функцию, которой передаётся управление при обращении к функции.

Владислав 25.06.2015 11:08

Ответ: Помогите с травой
 
как раз таки удобно разбивать функционал по функциям. некая структуризация. Сразу понятно что за что отвечает, да и вообще это хороший тон, на мой взгляд

Arton 25.06.2015 13:00

Ответ: Помогите с травой
 
Цитата:

Сообщение от L-ee-X (Сообщение 296939)
Чуть чуть не правильное у Вас понятие о функции. Она не обязательно в Blitz3D делается только из-за того чтоб код 100500 раз не писать.

Фу́нкция в программировании — поименованный фрагмент программного кода (подпрограмма), к которому можно обратиться из другого места программы. С именем функции неразрывно связан адрес первой инструкции (оператора), входящей в функцию, которой передаётся управление при обращении к функции.

Во-первых, у меня нет "правильного" представления.
Во-вторых, предпочитаю объяснять "на пальцах".


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

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