[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Реализация стихий в Blitz3D
SharkboyДата: Воскресенье, 04 Января 2009, 15:00 | Сообщение # 1
Продвинутый
Группа: Участники
Сообщений: 117
Награды: 0
Замечания: 0%
Статус:

Команда: GoD
У меня вот появился вопрос: как реализовать например дождь, снег, и другие погодные явления.
Кто нибудь знает может для этого есть свои библиотеки, или что то еще. Расскажите.


« Настоящие программеры не сдаются! (…они просто ленятся… =) )»

 
falc0nДата: Воскресенье, 04 Января 2009, 15:54 | Сообщение # 2
Продвинутый
Группа: Участники
Сообщений: 149
Награды: 0
Замечания: 0%
Статус:

Профессия: Студент
Команда: MINFOS studio(в команде я один xD )
Проектов: один(зубодробительная ММОРПГ)
советую обратить вниммание на ЭТО
Прикрепления: rain.rar (3.1 Kb)
 
diman666777Дата: Воскресенье, 04 Января 2009, 16:14 | Сообщение # 3
Группа: Удаленные





юзайте лотус
 
diman666777Дата: Воскресенье, 04 Января 2009, 17:11 | Сообщение # 4
Группа: Удаленные





AD, lotus
 
falc0nДата: Воскресенье, 04 Января 2009, 17:58 | Сообщение # 5
Продвинутый
Группа: Участники
Сообщений: 149
Награды: 0
Замечания: 0%
Статус:

Профессия: Студент
Команда: MINFOS studio(в команде я один xD )
Проектов: один(зубодробительная ММОРПГ)
Gideon,
вообще эффект дождя в максе не юзал даже хз о чем ты smile

но насколько могу представить это какой нить врей ... или чтото такое что дает возможность создания "анимации" или ваще статики...

мне по душе реалтайм эффект... если грамотно все сделать то к ресурсам будет не ОЧЕНЬ требователен... да и смотриться очень не плохо
полупрозрачные спрайты, фаст имедж... что может быть лучше???
но это лиж мнение...
не могу судить обьективно изза непонимания что значит "ипользовать дождь из макса"

 
ПрохожийДата: Воскресенье, 04 Января 2009, 18:12 | Сообщение # 6
Группа: Гости





Gideon, ты умным решил показаться? Ну ка экспортни ка дождик из макса - и кинь на всеобщее обозрение. Не можешь срать сучоныш - не мучай жопу.
 
falc0nДата: Воскресенье, 04 Января 2009, 18:20 | Сообщение # 7
Продвинутый
Группа: Участники
Сообщений: 149
Награды: 0
Замечания: 0%
Статус:

Профессия: Студент
Команда: MINFOS studio(в команде я один xD )
Проектов: один(зубодробительная ММОРПГ)
Прохожий, не можешь нормально общаться в общественном месте - вали в свинарник
 
FroZДата: Воскресенье, 04 Января 2009, 19:54 | Сообщение # 8
Бывалый
Группа: Участники
Сообщений: 57
Награды: 0
Замечания: 0%
Статус:
Думаю проще всего сделать дождь-снег системой частиц. Есть специальные библиотеки для этого, к примеру, как уже было сказано Lotus.
Но написать это самому, используя списки не представляет особой трудности. К примеру что такое дождь? Это савокупность капель, летящих с определённой скоростью и под определённым углом, если представить каждую каплю, как объект, привязать к нему спрайт и повернуть в определённом направлении, то мы уже получим готовый дождь. Останётся написать процедуру для обновления координат капель и всё (: Снег должен быть локальным, в каком-то радиусе вокруг игрока, иначе спрайтов будет слишком много-> будут тормоза


[VeXeD Signature] All come to Mobius soon >:]
 
SharkboyДата: Понедельник, 05 Января 2009, 06:54 | Сообщение # 9
Продвинутый
Группа: Участники
Сообщений: 117
Награды: 0
Замечания: 0%
Статус:

Команда: GoD
Мда, спама больше чем советов, но все же спасибо.

Хотя притензия только к одному

Quote (Прохожий)
Ну ка экспортни ка дождик из макса - и кинь на всеобщее обозрение...

(Файл прикреплен) вот, смотри. Ну что увидел как можно делать дождь в максе. Мне это Gideon как раз и кинул.
Так что сиди тихо, и не пизди.

Прикрепления: 3046057.rar (889.4 Kb)


« Настоящие программеры не сдаются! (…они просто ленятся… =) )»



Сообщение отредактировал Sharkboy - Понедельник, 05 Января 2009, 06:59
 
Прохожий1144Дата: Понедельник, 05 Января 2009, 11:10 | Сообщение # 10
Группа: Гости





Gideon, Систему частиц легче написать самому используя линейные списки или массив в крайнем случае)
Sharkboy, Спам (англ. spam) — это массовая, неперсонифицированная, рассылка с использованием специальных программ, коммерческой, политической и иной рекламы или иного вида сообщений людям, не выразившим желания их получать. © википедиия.
 
Прохожий1144Дата: Понедельник, 05 Января 2009, 13:41 | Сообщение # 11
Группа: Гости





Code
program Example_snow;

uses
   Blitz3DSDK;

const
   SnowValue = 128;

type
   tSprite = record
     hSprite : Cardinal;
     x, y, z : Real;
     ax, ay, az : Real;
     speed : real;
     Amp : byte;
     VisibleZone : word;
   end;

var
   hCamera : Cardinal;
   hTimer : Cardinal;

   SnowSprites : array[0..255] of tSprite;

procedure InitSnow(hObj : Cardinal; ispeed, sx, sz : real; iVisibleZone : word; Sprite : Pchar);
var i : Integer;
begin
   for i := 0 to SnowValue - 1 do
     with SnowSprites[i] do
     begin
       hSprite := LoadSprite(Sprite);
        
       ScaleSprite(hSprite, 0.1, 0.1);
       EntityParent(hSprite, hObj);
       VisibleZone := iVisibleZone;
       x := random(iVisibleZone * 2) - (VisibleZone);
       y := random(iVisibleZone * 2) - (VisibleZone);
       z := random(iVisibleZone * 2) - (VisibleZone);
       PositionEntity(hSprite, x, y, z);
       speed := ispeed;
       ay := ispeed + random(10)/1000;
       Amp := Trunc((Random(5) + 3));
       ax := sx;
       az := sz;
     end;
end;

procedure UpdateSnow;
var i : Integer;
begin
   for i := 0 to SnowValue - 1 do
     with SnowSprites[i] do
     begin
       y := y - ay - 0.01;
       x := x + ax;
       z := z + az;
       if y < - VisibleZone then y := VisibleZone;
       if x < - VisibleZone then x := VisibleZone;
       if z < - VisibleZone then z := VisibleZone;
       if x >  VisibleZone then x := - VisibleZone;
       if z >  VisibleZone then z := - VisibleZone;
       PositionEntity(hSprite, x + sin(y) / Amp, y, z + sin(y) / Amp);
     end;
end;

begin
   BeginBlitz3D;
   Graphics3D(800, 600);
   hCamera := CreateCamera();
   hTimer := CreateTimer(30);
   [i]InitSnow(hCamera, 0.2, 0.0, -0.2, 10, 'snow.tga');// родитель, скорость падения (y), сорость ветра по x и z, зона видимости, спрайт[/i]
   //MoveEntity(hSprite, 0, 0, 2);
   repeat
     [i]UpdateSnow;//двигаем снежинки и рисуем[/i]
     UpdateWorld();
     RenderWorld();
     Flip();
     WaitTimer(hTimer);
   until Boolean(KeyHit(1))
end.

Можно оформить как класс или библиотеку.
Вот пример, единственная тупость каждый спрайт приходится грузить заново 128 раз - плохой подход.
 
Прохожий1144Дата: Понедельник, 05 Января 2009, 14:10 | Сообщение # 12
Группа: Гости





Да, еще хороше бы прибавлять смещение родителя, а то нереалистично получается, особенно при медленном "снегопаде".
 
Прохожий1144Дата: Понедельник, 05 Января 2009, 15:12 | Сообщение # 13
Группа: Гости





Угадал, а что есть особая разниуа, те же вызовы, массивы я думаю в блице есть, записи или классы тоже.
Кстати в той же cs снег и дождь просто спрайты. Дождь так вообще из двух кадров.
 
Прохожий1144Дата: Понедельник, 05 Января 2009, 16:56 | Сообщение # 14
Группа: Гости





Jack
Ну да, а ты h2pas откуда качал? wink А вообще их полно сейчас.
Лежал без дела почти полгода вот решил попробовать.
По поводу дублирования стандартными средствами это избежать можно? И по поводу совместимости типов, вместо вещественных real использовать?
И кстати дай пример экспорта в функций в блиц чисто как это в для blitz оформить, а с вызовами там все понятно.
Поделюсь с ребятами дылкой для эффектов wink а то сам в нем не пушу...
 
Прохожий1144Дата: Понедельник, 05 Января 2009, 17:33 | Сообщение # 15
Группа: Гости





decls? Наверное оно как его правильно оформить?
И так какой тип если не real?
Я так понял из доступных:
Integer
PChar
????
 
Прохожий1144Дата: Понедельник, 05 Января 2009, 20:49 | Сообщение # 16
Группа: Гости





вот под блиц не проверял но вроде все правильно оформил.
Библиотека частиц

2Jack, если есть возможность, укажи ошибки.

Code
.dll " "
zeCreateDustEffect%( parent ,xsize# ,ysize# ,zsize# ,xspeed# ,yspeed# ,zspeed#, chaoseffect ,sprites$ )
zeShowEffect% ( effect )
zeHideEffect% ( effect )
zeScaleSprites% ( effect ,sx# ,sy# )
zeSetEffectSpeed% ( effect ,sx# ,sy# ,sz# )
zeUpdateEffect% ( effect ,sx# ,sy# )
zeDestroyEffect% ( effect )
zeDestroyAllEffects% ( )

Code
unit zeElementsSDK;

interface

const
   zeElementsDll = 'zeElements.dll';

function zeCreateDustEffect(hParent : Cardinal;
           xSize, ySize, zSize : Single;
           xSpeed, ySpeed, zSpeed : Single;
           ChaoticEffect : Integer;
           ElementsCount : Integer;
           ssSprites : PChar)
            : Cardinal; cdecl;
function zeShowEffect(Effect : Cardinal) : Integer; cdecl;
function zeHideEffect(Effect : Cardinal) : Integer; cdecl ;
function zeScaleSprites(Effect : Cardinal; sx, sy : Single) : Integer; cdecl;
function zeSetEffectSpeed(Effect : Cardinal; sx, sy, sz : Single) : Integer; cdecl;
function zeUpdateEffect(Effect : Cardinal) : Integer; cdecl ;
function zeDestroyEffect(Effect : Cardinal) : Integer; cdecl;
function zeDestroyAllEffects : Integer; cdecl;

implementation

function zeCreateDustEffect; external zeElementsDll;
function zeShowEffect; external zeElementsDll;
function zeHideEffect; external zeElementsDll;
function zeScaleSprites; external zeElementsDll;
function zeSetEffectSpeed; external zeElementsDll;
function zeUpdateEffect; external zeElementsDll;
function zeDestroyEffect; external zeElementsDll;
function zeDestroyAllEffects; external zeElementsDll;

end.
 
Прохожий1144Дата: Понедельник, 05 Января 2009, 21:32 | Сообщение # 17
Группа: Гости





Ты про что? про cardian? это ведь тоже 4-х байтовое, только беззнаковое. Работать должно если Decls правильно оформить.
Или ты еще про какие то типы?
Дай хоть ссылочный как его оформить? у меня желания качать блиц вообще нет.
 
Прохожий1144Дата: Понедельник, 05 Января 2009, 21:55 | Сообщение # 18
Группа: Гости





Как вообще могут быть разные типы данных если используется одна и та же b3d.dll???
 
Прохожий1144Дата: Понедельник, 05 Января 2009, 22:27 | Сообщение # 19
Группа: Гости





Quote (Jack)
В блице она не используется.

А! Вот в чем проблема! Я то думал он b3d подгружает и память общая получается.
Те рисовать можно через буферы и например играть с объектами через указатели.
Quote (Jack)
при передаче первым параметром блицовской ентити, ты получишь ошибку

А вот тут не уверен, я то буду работать с энтнити из b3d.dll (если она будет рядом с проектом) и буду использовать ее память.
Кстати, а вдруг они файлмаппинг используют... но видимо нет, раз ты уверенно говоришь что работать не будет.
Ладно тогда играться прекращаю. или скачать и самому убедиться?
 
SharkboyДата: Вторник, 06 Января 2009, 03:52 | Сообщение # 20
Продвинутый
Группа: Участники
Сообщений: 117
Награды: 0
Замечания: 0%
Статус:

Команда: GoD
Quote (Jack)
Нашел тут систему частиц. Не проверял, но Goodzila уверяет, что всё работает = )

Прикольно сделано, еще бы кто рассказал как можно свое сделать.


« Настоящие программеры не сдаются! (…они просто ленятся… =) )»

 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: