Воскресенье, 05 Мая 2024, 03:00

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » Alkosha [230]
Результаты поиска
AlkoshaДата: Вторник, 20 Января 2015, 00:19 | Сообщение # 81 | Тема: Code::Blocks + irrlicht
участник
Сейчас нет на сайте
Цитата set16 ()
Как исправить?


пересобрать исходник под ту версию GCC, то работает в твоём код-блоксе. Не?
AlkoshaДата: Суббота, 17 Января 2015, 16:50 | Сообщение # 82 | Тема: Концепт-арт
участник
Сейчас нет на сайте
Концепт к игре на хз-спектрум.


Сама игра:
http://www.worldofspectrum.org/infoseekid.cgi?id=0027211

Добавлено (15 января 2015, 22:51)
---------------------------------------------
Пропорции головы, кистей рук сейчас бы подправил. В 2011-ом ещё жутко косячил с человекоподобными пропорциями.

Добавлено (17 января 2015, 16:50)
---------------------------------------------
4 года назад назад рисовал концепты к игре, где в главной роли была бы тёлочка киборг.
Но в тридэ даже спустя такое время не могу ничего толкового замоделить.

В частности застопорился на текстурировании, риггинге.



Сообщение отредактировал Alkosha - Суббота, 17 Января 2015, 16:50
AlkoshaДата: Воскресенье, 11 Января 2015, 21:42 | Сообщение # 83 | Тема: Моделирование "волос". (3ds max)
участник
Сейчас нет на сайте
Как замоделить волосы полигонами ? А самое главное, правильно затекстурить с альфа-каналом. И так, чтоб импортировать в дальнейшем в Юньку.
Или может есть уже готовая модель волосни с ригом?

Волосы хочу примерно такие (только в 3д, разумеется):
AlkoshaДата: Воскресенье, 11 Января 2015, 14:51 | Сообщение # 84 | Тема: Сегментная анимация.
участник
Сейчас нет на сайте
Разбил персонажа на отдельные спрайты-сегменты. Теперь надо бы заставить их слаженно двигаться.
На мегадрайве зачастую была подобного рода анимация.
Особенно в играх от Treasure: видео №1, видео №2
Или Konami: Видео №1, видео №2

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

Пока вот что получается (пока лишь на примере двух ключевых кадров):
ГИФ

Мне кажется, сам подход не корректный.
Код
class myKingOfHell
{
       SDL_Rect Dest;
       SDL_Texture* molottex;
       float molotx,moloty;
       SDL_Texture* torsotex;
       float torsox,torsoy;
       SDL_Texture* jawstex;
       float jawsx,jawsy;
       SDL_Texture* hooktex;
       float hookx,hooky;

       int animkey;
       float dx,dy;

       void endpoint(float nowX, float nowY, float endX, float endY, float speed)
       {
           auto angle=-atan2(nowX-endX,nowY-endY)/3.14*180;
           dx=sin(angle*3.14/180)*speed;
           dy=-cos(angle*3.14/180)*speed;
       }

public:
       float x=400,y;
       int state=1; // состояние 0=disable 1= idle 2= ползёт 3= атака

       myKingOfHell()
       {
           animkey=0;

           torsox=0;
           torsoy=0;
           molotx=15;
           moloty=190;
           jawsx=25;
           jawsy=100;
           hookx=110;
           hooky=100;
       }

       void update()
       {
           if(state==1)
               {
                   if(animkey==0)
                       {
                           endpoint(jawsx,jawsy,37,107,0.2);
                           jawsx+=dx;
                           jawsy+=dy;

                           endpoint(molotx,moloty,15,190,0.4);
                           molotx+=dx;
                           moloty+=dy;

                           endpoint(hookx,hooky,128,140,0.5);
                           hookx+=dx;
                           hooky+=dy;
                           if(hookx>=128)animkey=1;
                       }

                   if(animkey==1)
                       {
                           endpoint(jawsx,jawsy,25,100,0.2);
                           jawsx+=dx;
                           jawsy+=dy;

                           endpoint(molotx,moloty,20,200,0.2);
                           molotx+=dx;
                           moloty+=dy;

                           endpoint(hookx,hooky,110,100,1);
                           hookx+=dx;
                           hooky+=dy;

                           if(hookx<=110)animkey=0;
                       }

               }
       }

       void  display()
       {
           if(molottex==NULL)
               {
                   molottex = IMG_LoadTexture(renderer, "img//koh1.png");
               }
           if(torsotex==NULL)
               {
                   torsotex = IMG_LoadTexture(renderer, "img//koh2.png");
               }
           if(jawstex==NULL)
               {
                   jawstex = IMG_LoadTexture(renderer, "img//koh3.png");
               }
           if(hooktex==NULL)
               {
                   hooktex = IMG_LoadTexture(renderer, "img//koh4.png");
               }

           Dest.x=molotx-cum.x+x;
           Dest.y=moloty-cum.y+y;
           Dest.w=341;
           Dest.h=208;
           if(Dest.x>-341&&Dest.x<800)
               {
                   SDL_RenderCopy(renderer, molottex ,  NULL, &Dest);
               }

           Dest.x=torsox-cum.x+x;
           Dest.y=torsoy-cum.y+y;
           Dest.w=554;
           Dest.h=453;
           if(Dest.x>-554&&Dest.x<800)
               {
                   SDL_RenderCopy(renderer, torsotex ,  NULL, &Dest);
               }
           Dest.x=jawsx-cum.x+x;
           Dest.y=jawsy-cum.y+y;
           Dest.w=143;
           Dest.h=142;
           if(Dest.x>-143&&Dest.x<800)
               {
                   SDL_RenderCopy(renderer, jawstex ,  NULL, &Dest);
               }

           Dest.x=hookx-cum.x+x;
           Dest.y=hooky-cum.y+y;
           Dest.w=393;
           Dest.h=275;
           if(Dest.x>-393&&Dest.x<800)
               {
                   SDL_RenderCopy(renderer,hooktex ,  NULL, &Dest);
               }

       }

};
myKingOfHell KOH;


animkey = номер ключевого кадра.
Функция endpoint() отвечает за перемещение отдельно взятого спрайта. Тут ещё вручную задаю скорость перемещения каждого. Было бы неплохо, если б скорость сама определялась между ключевыми кадрами.

Добавлено (11 января 2015, 14:51)
---------------------------------------------
Там когда сегмент достигает до конечной - дрожит. Размах этого дрожания зависит от скорости. Вот эту траблу надо бы убрать.

Сообщение отредактировал Alkosha - Воскресенье, 11 Января 2015, 13:54
AlkoshaДата: Пятница, 09 Января 2015, 20:06 | Сообщение # 85 | Тема: Помогите рачитать оффсет отражённой текстуры.
участник
Сейчас нет на сайте
Цитата HPlusDiese ()
projection matrix


И ? чего-то не встречал в SDL-е ничего связанного с матрицами.

Цитата HPlusDiese ()
Ты ещё наверное и на FFP всё делаешь?


Что за аббревиатура? Fixed Function Pipeline ?


Сообщение отредактировал Alkosha - Суббота, 10 Января 2015, 17:24
AlkoshaДата: Четверг, 08 Января 2015, 13:07 | Сообщение # 86 | Тема: Помогите рачитать оффсет отражённой текстуры.
участник
Сейчас нет на сайте
Цитата DungeonLord ()
чтобы отражение не наползало на оригинал


Не в этом дело. Я не планирую делать так, чтоб рокИр окунался по пояс в воду. Там просто когда камера двигается по Y само отражение немного тоже двигается.

Добавлено (08 января 2015, 13:07)
---------------------------------------------
Да ладно. И так сойдёт. Слишком много времени уделяю обычному не геймплейному декору.

AlkoshaДата: Четверг, 08 Января 2015, 11:38 | Сообщение # 87 | Тема: Помогите рачитать оффсет отражённой текстуры.
участник
Сейчас нет на сайте
Цитата HPlusDiese ()
Весело.


Не пойму иронии. Вам известен иной метод?
Изначально я зумил рендерер, но он масштабируется относительно начала декаротвых координат (левого верхнего угла), то есть мне нужно было дополнительно смещать объекты на игровом поле. Рендерить всё в текстуру и после этого извращаться с ней как угодно - гораздо проще.
AlkoshaДата: Среда, 07 Января 2015, 23:47 | Сообщение # 88 | Тема: Помогите рачитать оффсет отражённой текстуры.
участник
Сейчас нет на сайте
dstrect.y= dstrect.y + 10 * cum.z * cum.y - cum.y * 2 * cum.z;

ГИФ

dstrect.y= dstrect.y + 200 * cum.z - cum.y * 2;

ГИФ

dstrect.y= dstrect.y + 200 * cum.z - cum.y * 2 * cum.z;

ГИФ
AlkoshaДата: Среда, 07 Января 2015, 20:09 | Сообщение # 89 | Тема: Помогите рачитать оффсет отражённой текстуры.
участник
Сейчас нет на сайте
Цитата DungeonLord ()
dstrect.y= dstrect.y + 200 * cum.z - cum.y * 2;


В этом случае есть смещение при зуме.
AlkoshaДата: Среда, 07 Января 2015, 19:17 | Сообщение # 90 | Тема: Помогите рачитать оффсет отражённой текстуры.
участник
Сейчас нет на сайте
Хыыы... Прикольная апичатка в названии темы.

Добавлено (07 января 2015, 19:17)
---------------------------------------------
По совету Снэйка уже более-менее нормально работает. Только когда камера двигается по Y, отражённая текстура немного "плывёт". Зато по Z строго на фиксированном месте , как и положено.
Может на текстуре "воды" нормально будет смотреться.

AlkoshaДата: Среда, 07 Января 2015, 19:00 | Сообщение # 91 | Тема: Помогите рачитать оффсет отражённой текстуры.
участник
Сейчас нет на сайте
Для ясности картины, попытаюсь пояснить подробнее:

Есть текстурка texTarget2 размером на весь экран (800*600), на неё рендерятся спрайты с координатами x=x-cum.x и y=y-cum.y.
Эту же текстуру флиппаю по вертикали. Но так как "отражение" должно быть в той системе координат, к которой привязана камера, надо учитывать ещё смещение камеры по Y при выводе отражённой текстуры.

Приближение\удаление камеры происходит за счёт изменения размеров этого самого texTarget2.


Сообщение отредактировал Alkosha - Среда, 07 Января 2015, 19:01
AlkoshaДата: Среда, 07 Января 2015, 18:35 | Сообщение # 92 | Тема: Помогите рачитать оффсет отражённой текстуры.
участник
Сейчас нет на сайте
Цитата
dstrect.y = dstrect.y+dstrect.h*3/4; попробуй

Не. Всё равно чего-то не то.


Сообщение отредактировал Alkosha - Среда, 07 Января 2015, 18:35
AlkoshaДата: Среда, 07 Января 2015, 15:10 | Сообщение # 93 | Тема: Помогите рачитать оффсет отражённой текстуры.
участник
Сейчас нет на сайте
Вроде сперва не в тот раздел сунулся с данным вопросом. -> http://gcup.ru/forum/45-42481-1
Там относительно высокоуровневые движки обсуждаются. А я шаманю на SDL2.

Так вот, проблема в том, что не могу расчитать координаты отражённой текстуры.

Получается так, что при масштабировании отражения "съезжают"

Гиф-анимашка

Код
    SDL_Rect dstrect;
        dstrect.w=800*cum.z;
        dstrect.h=600*cum.z;
        dstrect.x=400-400*cum.z;
        dstrect.y=300-300*cum.z;
        SDL_Point center;
        center.x=400;
        center.y=300;

        SDL_SetTextureBlendMode(texTarget,SDL_BLENDMODE_BLEND);
        SDL_SetTextureBlendMode(texTarget2,SDL_BLENDMODE_BLEND);

        SDL_SetRenderTarget(renderer, NULL);
        SDL_RenderCopyEx(renderer, texTarget, NULL, &dstrect, cum.angle,
        ¢er, SDL_FLIP_NONE);

        SDL_RenderCopyEx(renderer, texTarget2, NULL, &dstrect, cum.angle,
        ¢er, SDL_FLIP_NONE);

        dstrect.y= dstrect.y+200-cum.y*2;
        dstrect.h/=2;

        SDL_SetTextureAlphaMod(texTarget2,100);
        SDL_RenderCopyEx(renderer, texTarget2, NULL, &dstrect, cum.angle,
        ¢er, SDL_FLIP_VERTICAL);


Где texTarget - бэграунд, texTarget2 = передний план, который выводится дважды, в нормальном и в зеркальном виде.
cum - класс камеры.
Вот тут нужно подобрать оффсет: dstrect.y= dstrect.y+200-cum.y*2;



И ещё.
dstrect.h/=2; - это плющит отражённую текстуру по вертикали вдвое.


Сообщение отредактировал Alkosha - Среда, 07 Января 2015, 15:21
AlkoshaДата: Вторник, 06 Января 2015, 13:37 | Сообщение # 94 | Тема: Работы новичков
участник
Сейчас нет на сайте
фан-арт.


А это выжигал на ДВП, только тогда ещё калечный фотик был на телефоне (сфоткано на сименс ц75, хыыы).
AlkoshaДата: Понедельник, 05 Января 2015, 16:19 | Сообщение # 95 | Тема: Работы новичков
участник
Сейчас нет на сайте
От концепта к пиксель-арту.


Добавлено (03 января 2015, 01:28)
---------------------------------------------
В память о моих преподавателях по электронике.


P.S.
я 1 минуту рисовал одной левой не судите строго



Добавлено (05 января 2015, 16:19)
---------------------------------------------
Снова Metalix Zone.





Сообщение отредактировал Alkosha - Понедельник, 05 Января 2015, 16:19
AlkoshaДата: Воскресенье, 04 Января 2015, 23:44 | Сообщение # 96 | Тема: Нужны 2д художники и аниматоры
участник
Сейчас нет на сайте
Цитата Alter_Rhyme ()
Ну в прицепи вектор - гораздо легче растра.


Если собираешься нарисовать один лишь эллипс с градиентом, то да.

Но хотелось бы посмотреть, как ты бы повторил такое, например.
AlkoshaДата: Воскресенье, 04 Января 2015, 19:51 | Сообщение # 97 | Тема: Нужны 2д художники и аниматоры
участник
Сейчас нет на сайте
Ну а само очертание "игры" хоть есть?

Цитата DEMON51 ()
, похожей на World Of Goo.


Ни разу не пробовал подобное рисовать. Да и не играл я в неё. Видел лишь скриншоты. Судя по всему, там векторно рисовалось всё. В corel draw, например.
AlkoshaДата: Суббота, 03 Января 2015, 01:21 | Сообщение # 98 | Тема: Нужны 2д художники и аниматоры
участник
Сейчас нет на сайте
Заманчиво. Но увы, мой скилл пока ещё слабоват. sad
AlkoshaДата: Четверг, 01 Января 2015, 15:46 | Сообщение # 99 | Тема: Работы новичков
участник
Сейчас нет на сайте
Несколько дней назад приобрёл диджитайзер.
Пока вот такая мазня получается.



Набросал концепт-арт к "Металикс-Зоне"



AlkoshaДата: Суббота, 27 Декабря 2014, 15:25 | Сообщение # 100 | Тема: "Отражения" SDL2.
участник
Сейчас нет на сайте
Цитата Snake174 ()
Можно в принципе ещё делать всё на чистом OpenGL, а SDL использовать только для создания окна и обработки ввода.


Про это я знаю. А я говорил про чистый SDL2.

Добавлено (24 декабря 2014, 11:51)
---------------------------------------------
Когда-то давно пытался настроить проект кодблокса на openGL+SDL, так ничего и не получилось. Раздельно openGL-проект и SDL-проект пашут, а в одном проекте - шляпа. С тех пор я и забил.

Добавлено (24 декабря 2014, 11:54)
---------------------------------------------
Цитата Snake174 ()
а SDL использовать только для создания окна и обработки ввода.


По сути, тот же glut можно использовать, не обязательно SDL

Добавлено (27 декабря 2014, 15:25)
---------------------------------------------
wink никак не могу расчитать оффсет при масштабировании.

Textarget - нормальное изображение, Textarget2 - отзеркаленное.

(cum - класс камеры)
Спрайты на textarget размещаются по X-cum.x, Y-cum.y

Код

        SDL_Rect dstrect;
        dstrect.w=800*cum.z;
        dstrect.h=600*cum.z;
        dstrect.x=400-400*cum.z;
        dstrect.y=300-300*cum.z;
        SDL_Point center;
        center.x=400;
        center.y=300;

        SDL_SetTextureBlendMode(texTarget,SDL_BLENDMODE_BLEND);
        SDL_SetTextureBlendMode(texTarget2,SDL_BLENDMODE_BLEND);

        SDL_SetRenderTarget(renderer, NULL);
        SDL_RenderCopyEx(renderer, texTarget, NULL, &dstrect, cum.angle,
        ¢er, SDL_FLIP_NONE); //БЭКГРАУНД (1-ый план)

    SDL_RenderCopyEx(renderer, texTarget2, NULL, &dstrect, cum.angle,
      ¢er, SDL_FLIP_NONE); // НОРМАЛЬНОЕ ИЗОБРАЖЕНИЕ (2-ой план)

        dstrect.y=-300*cum.z; // ВОТ ТУТА НАДО КАК-ТО РАСЧИТАТь ПОЗИЦИОНИРОВАНИЕ ТЕКСТУРЫ ПО Y

        SDL_SetTextureAlphaMod(texTarget2,100);
        SDL_RenderCopyEx(renderer, texTarget2, NULL, &dstrect, cum.angle,
        ¢er, SDL_FLIP_VERTICAL); // ОТРАЖЕНИЕ

        effects.shading();
        gui.display();
        dialog.display();
        SDL_RenderPresent(renderer);
        SDL_DestroyTexture(texTarget2);


Сообщение отредактировал Alkosha - Суббота, 27 Декабря 2014, 16:02
Форум игроделов » Записи участника » Alkosha [230]
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг