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)

Max Payne 22.06.2015 13:17

Помогите с травой
 
Друзья помогите разобраться.

Есть исходник в котором загружена трава и ее можно привязать к любому объекту. (допустим к пивоту как в исходнике или к камере).

как сделать загрузку еще одной травы и привязать её к другому объекту.

PS. модель сосны в примере даю в подарок


http://www.fayloobmennik.net/5098420

Max Payne 22.06.2015 13:32

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


чтоб было вот так

Arton 22.06.2015 13:34

Ответ: Помогите с травой
 
Не понял, зачем повторную загрузку травы делать? Делаем копию, ставим куда нужно.

CopyEntity ( entity )
PositionEntity ( entity, x, y, z )

В твоём случае ещё лучше. Там какая-то система травы, изучи её.

Max Payne 22.06.2015 13:47

Re: Помогите с травой
 
если бы знать что копировать

Arton 22.06.2015 15:14

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

Сообщение от Max Payne (Сообщение 296835)
если бы знать что копировать

Там всё это есть. Смотри внимательней, почитай описание функций.
Например BG_SetGrassMap(Layer, MapFile$) позволит ставить траву по маске.

О чём ты паришься, у тебя готовая система травы.

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

LLI.T.A.L.K.E.R. 22.06.2015 15:28

Ответ: Помогите с травой
 
допустим есть Include\BlitzGrass.bb

я сделал (для упрощения) 2 копии - BlitzGrassNear.bb и BlitzGrassFar.bb

в первом инклюде заменил все символы BG_ на BGN_
и получилась, например, Function BGN_LoadGrass

понятно, что один тип травы использовал для близких расстояний, второй тип - для упрощённого вида в дали

Max Payne 22.06.2015 16:42

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

Сообщение от LLI.T.A.L.K.E.R. (Сообщение 296841)
допустим есть Include\BlitzGrass.bb

я сделал (для упрощения) 2 копии - BlitzGrassNear.bb и BlitzGrassFar.bb

в первом инклюде заменил все символы BG_ на BGN_
и получилась, например, Function BGN_LoadGrass

понятно, что один тип травы использовал для близких расстояний, второй тип - для упрощённого вида в дали


Спасибо помогло.. Заменил все BG на BGN.

Есть ли еще проще способ? а то для каждой новой травы нужно постоянно делать новый Include

L-ee-X 22.06.2015 17:32

Ответ: Помогите с травой
 
А не проще изучить файлы и загружать? Вы наверное туда даже не заглядывали в эти файлы.

ARA 22.06.2015 17:32

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

L-ee-X 22.06.2015 17:47

Ответ: Помогите с травой
 
Программирование на стадии копипастера как то не ахти. Человек не вникая и не изучая функции задает глупые вопросы. Создай тогда десять заголовочных файлов и будет тебе счастье :-D

Артем Валерьевич 22.06.2015 18:30

Ответ: Помогите с травой
 
Max Payne
Нуждающийся

Регистрация: 23.12.2007
Сообщений: 66

Стыдно должнобыть батенька!

LLI.T.A.L.K.E.R. 22.06.2015 19:14

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

Сообщение от Артем Валерьевич (Сообщение 296856)
Max Payne
Нуждающийся

Регистрация: 23.12.2007
Сообщений: 66

Стыдно должнобыть батенька!

просто давно уже хотел спросить, никак не решался такие вопросы задавать..
а тут подвернулось как-то (что на булке затишье)

или может уже сын на отцовском аккаунте сидит?!!! зачем сразу стыдить.

Артем Валерьевич 22.06.2015 23:37

Ответ: Помогите с травой
 
да былобы здоровоеслиб сидел

Max Payne 23.06.2015 09:42

Re: Помогите с травой
 
я не программист. и все что я знаю о программирование это If Then Else.

Max Payne 23.06.2015 09:56

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

Сообщение от Arton (Сообщение 296840)
Например BG_SetGrassMap(Layer, MapFile$) позволит ставить траву по маске.
.

Не расскажешь по подробнее как это сделать?

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 раз не писать.

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

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

L-ee-X 25.06.2015 18:27

Ответ: Помогите с травой
 
Ну я как бэ тоже бэ на пальцах объяснил да печатать лень ;-) Ну если у Вас нет правильного представления об функции то зачем тогда человеку который пытается учить программирование внушать что функция существует для того чтоб не писать код 100500 раз.

Arton 25.06.2015 19:50

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

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

А что, она ещё на что-то годится?

Скорректировал своё объяснение.

Randomize 25.06.2015 23:44

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

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

Так оно и есть.

Max Payne 26.06.2015 15:54

Re: Помогите с травой
 
Объясните почему при затемнение сцены с помощью AmbientLight затемняется все кроме травы.


Arton 26.06.2015 15:59

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

Сообщение от Max Payne (Сообщение 296999)
Объясните почему при затемнение сцены с помощью AmbientLight затемняется все кроме травы.

pic

Полная яркость включена, по этому освещение не влияет:
EntityFX grs\Mesh, 1+16

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 70 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

Max Payne 26.06.2015 16:23

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

Сообщение от Arton (Сообщение 297000)
Полная яркость включена, по этому освещение не влияет:
EntityFX grs\Mesh, 1+16

*** скрытый текст ***

большое спасибо.

первый сайт который выдает Яндекс при запросе загрузить картинку и получить ссылку:)

Arton 26.06.2015 16:30

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

Сообщение от Max Payne (Сообщение 297002)
большое спасибо.

первый сайт который выдает Яндекс при запросе загрузить картинку и получить ссылку:)

Ого. Лучше вторую использовать, радикал, у них всё долго хранится.

impersonalis 26.06.2015 16:56

Ответ: Помогите с травой
 
Лейте на булку - сами регулируйте срок хранения.

Randomize 26.06.2015 16:58

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

Сообщение от impersonalis (Сообщение 297009)
Лейте на булку - сами регулируйте срок хранения.

А кто делает иначе - бяка. Через время его пост перестанет показывать картинки и суть может ускользнуть.


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

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