Суббота, 17 Апреля 2021, 20:06

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Форум игроделов » Записи участника » AlexsSyr [82]
Результаты поиска
AlexsSyrДата: Воскресенье, 10 Июня 2018, 23:33 | Сообщение # 1 | Тема: Fusion [3D]
почетный гость
Сейчас нет на сайте
Цитата TLT ()
Графон, не знаешь даже, хвалить или нет. Смотрится классно, но чего-то не хватает. Деталей, может быть. Как-то стерильно всё.

Да, я буду ещё над этим работать. Конечно, потом добавлю различные дефекты. Подтёки, пятна и царапины. Да и объектов будет больше.


Сообщение отредактировал AlexsSyr - Воскресенье, 10 Июня 2018, 23:36
AlexsSyrДата: Воскресенье, 10 Июня 2018, 21:52 | Сообщение # 2 | Тема: Fusion [3D]
почетный гость
Сейчас нет на сайте
Название: Fusion
Жанр: Хоррор/Квест
Близкие по духу: Penumbra, Outlast
Движок: UE4
Стадия разработки: Начальная
Команда: ну, пока в одиночку.

Группа

Описание: Действия игры разворачиваются в альтернативной реальности. Нам предстоит оказаться в эпицентре трагических событий в роли специалиста по информационной безопасности. Мы станем свидетелями того, как попытка обратить силы природы во благо обернулась трагедией.

Немного лора:


Скриншоты:


Сообщение отредактировал AlexsSyr - Среда, 13 Июня 2018, 23:21
AlexsSyrДата: Понедельник, 22 Января 2018, 20:17 | Сообщение # 3 | Тема: Сглаживание при MRT
почетный гость
Сейчас нет на сайте
Имеется следующий класс для множественной отрисовки.
Код
#include "FBO.h"

bool FBO::Init(unsigned int W, unsigned int H, unsigned int count)
{
    w = W;
    h = H;

    glGenFramebuffers(1, &fbo);
    glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);

    Log::PrintMessage("Создание FBO ...");

    textures = new GLuint[count];

    glGenTextures(count, textures);
    glGenTextures(1, &depthTexture);

    for (unsigned int i = 0; i < count; i++) {
  glBindTexture(GL_TEXTURE_2D, textures[i]);
  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, w, h, 0, GL_RGBA, GL_FLOAT, NULL);
  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i, GL_TEXTURE_2D, textures[i], 0);
    }

    // depth
    glBindTexture(GL_TEXTURE_2D, depthTexture);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32F, w, h, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
    glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depthTexture, 0);

    GLenum* DrawBuffers = new GLenum[count];
    for (unsigned int i = 0; i < count; i++)
  DrawBuffers[i] = GL_COLOR_ATTACHMENT0 + i;

    glDrawBuffers(count, DrawBuffers);

    GLenum Status = glCheckFramebufferStatus(GL_FRAMEBUFFER);

    if (Status != GL_FRAMEBUFFER_COMPLETE)
    {
  Log::PrintError("Не удалось создать FBO");
  return false;
    }

    // restore default FBO
    glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);

    Log::PrintMessage("FBO успешно создан");

    return true;
}

void FBO::Bind()
{
    glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);

    glViewport(0, 0, w, h);
}

void FBO::BindDefaultFBO()
{
    glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
}

FBO::FBO()
{
}

FBO::~FBO()
{
}


Может кто подсказать, как реализовать сглаживание при данном подходе к рендерингу ?
AlexsSyrДата: Среда, 07 Июня 2017, 15:01 | Сообщение # 4 | Тема: Sapper
почетный гость
Сейчас нет на сайте
Платформа: PC.
Версия: 0.007.
Движок: Unity 3D.
Старт работы: 30.05.2017.

Описание:
Почувствуйте себя советским сапером и пройдите путь от обороны Москвы до Берлина!
Особенности проекта:
Необычный подход к реализации. Планируется использование приближенных к реальности локаций, моделей советской и немецкой техники, элементы шутера.

Тестовая локация:
Видео


Сообщение отредактировал AlexsSyr - Среда, 07 Июня 2017, 15:03
AlexsSyrДата: Пятница, 10 Марта 2017, 18:10 | Сообщение # 5 | Тема: Изменить / прочитать цвет пикселя.
почетный гость
Сейчас нет на сайте
Есть функция, которая создаёт несколько целей для рисования.
Код
void RenderTarget::InitialMultiRenderTarget(const bool withDepthBuffer,const RenderInitInfo* info)
    {
  HRESULT hr = S_OK;
  bufferCount = info->_mrtCount;

  renderTargetViewArray = new ID3D11RenderTargetView*[bufferCount];
  renderTargetTextureArray = new ID3D11Texture2D*[bufferCount];
  shaderResourceViewArray = new ID3D11ShaderResourceView*[bufferCount];

  textureDesc.Width = info->_width;
  textureDesc.Height = info->_height;
  textureDesc.MipLevels = 1;
  textureDesc.ArraySize = 1;
  textureDesc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT;
  textureDesc.SampleDesc.Count = info->_multisamples;
  textureDesc.SampleDesc.Quality = info->_quality;
  textureDesc.Usage = D3D11_USAGE_DEFAULT;
  textureDesc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE;
  textureDesc.CPUAccessFlags = 0;
  textureDesc.MiscFlags = 0;

  for (int i = 0; i<bufferCount; i++)
  {
   hr = render->GetDevice()->CreateTexture2D(&textureDesc, NULL, &renderTargetTextureArray[i]);
   if (FAILED(hr))
   {
    ERROR("Код ошибки: # 0006");
   }
  }

  D3D11_RENDER_TARGET_VIEW_DESC renderTargetViewDesc;

  renderTargetViewDesc.Format = textureDesc.Format;
  renderTargetViewDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
  renderTargetViewDesc.Texture2D.MipSlice = 0;

   // Create the render target views.
   for (int i = 0; i<bufferCount; i++)
   {
    hr = render->GetDevice()->CreateRenderTargetView(renderTargetTextureArray[i], &renderTargetViewDesc, &renderTargetViewArray[i]);
    if (FAILED(hr))
    {
     ERROR("Код ошибки: # 0006");
    }
   }

   D3D11_SHADER_RESOURCE_VIEW_DESC shaderResourceViewDesc;
  // Setup the description of the shader resource view.
  shaderResourceViewDesc.Format = textureDesc.Format;
  shaderResourceViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
  shaderResourceViewDesc.Texture2D.MostDetailedMip = 0;
  shaderResourceViewDesc.Texture2D.MipLevels = 1;

   // Create the shader resource views.
   for (int i = 0; i<bufferCount; i++)
   {
    hr = render->GetDevice()->CreateShaderResourceView(renderTargetTextureArray[i], &shaderResourceViewDesc, &shaderResourceViewArray[i]);
    if (FAILED(hr))
    {
     ERROR("Код ошибки: # 0006");
    }
   }

   ID3D11Texture2D* pBackBuffer = NULL;
   hr = render->GetSwapChain()->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&pBackBuffer);
   if (FAILED(hr))    ERROR("Код ошибки: # 0002");

   D3D11_TEXTURE2D_DESC descDepth;            // —труктура с параметрами
   ZeroMemory(&descDepth, sizeof(descDepth));
   pBackBuffer->GetDesc(&descDepth);
   descDepth.MipLevels = 1;                   // уровень интерпол€ции
   descDepth.ArraySize = 1;
   descDepth.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; // формат (размер пиксел€)
   descDepth.SampleDesc.Count = 1;
   descDepth.SampleDesc.Quality = 0;
   descDepth.Usage = D3D11_USAGE_DEFAULT;
   descDepth.BindFlags = D3D11_BIND_DEPTH_STENCIL;         // вид - буфер глубин
   descDepth.CPUAccessFlags = 0;
   descDepth.MiscFlags = 0;
   pBackBuffer->Release();

   // при помощи заполненной структуры-описани€ создаем объект текстуры
   hr = render->GetDevice()->CreateTexture2D(&descDepth, NULL, &depthStencilBuffer);
   if (FAILED(hr)) ERROR("Код ошибки: # 0004");

   D3D11_DEPTH_STENCIL_VIEW_DESC descDSV;            // —труктура с параметрами
   ZeroMemory(&descDSV, sizeof(descDSV));
   descDSV.Format = descDepth.Format;         // формат как в текстуре
   descDSV.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
   descDSV.Texture2D.MipSlice = 0;
   // ѕри помощи заполненной структуры-описани€ и текстуры создаем объект буфера глубин
   hr = render->GetDevice()->CreateDepthStencilView(depthStencilBuffer, &descDSV, &depthStencilView);
   if (FAILED(hr)) ERROR("Код ошибки: # 0005");
    }


Каким образом можно обратиться к любой из них и записать/считать пиксель в координатах XY ?


Сообщение отредактировал AlexsSyr - Пятница, 10 Марта 2017, 18:12
AlexsSyrДата: Вторник, 10 Января 2017, 18:34 | Сообщение # 6 | Тема: Не создаёт константный буфер.
почетный гость
Сейчас нет на сайте
Хм, в буфере был только один float. И всё вылетало.
Добавил три матрицы всё заработало.
AlexsSyrДата: Понедельник, 19 Декабря 2016, 07:02 | Сообщение # 7 | Тема: Помогите разобраться как храниться анимация в dae. формате.
почетный гость
Сейчас нет на сайте


1)bind_shape_matrix - как я понял это начальная позиция меша.
2) <Name_array id="Box001Controller-Joints-array" count="5"> - количество костей и их имена.
3) <float_array id="Box001Controller-Matrices-array" count="80"> - начальное положение костей.
4) <float_array id="Box001Controller-Weights-array" count="1015"> - весы, можете объяснить как использовать их при расчёте анимации ?
5) <input semantic="JOINT" offset="0" source="#Box001Controller-Joints"/>
<input semantic="WEIGHT" offset="1" source="#Box001Controller-Weights"/> - непонятный набор индексов, для чего он нужен и как его использовать ?
6) <animation id="Bone001-anim" name="Bone001"><animation><source id="Bone001-Matrix-animation-input"><float_array id="Bone001-Matrix-animation-input-array" count="31"> - ключи анимации
7) technique_common><accessor source="#Bone001-Matrix-animation-input-array" count="31"><param name="TIME" type="float"/></accessor></technique_common></source><source id="Bone001-Matrix-animation-output-transform"><float_array id="Bone001-Matrix-animation-output-transform-array" count="496"> - матрица кости для каждого ключа.

Я не понимаю от куда брать иерархию костей и как используются вес кости при расчёте анимации.
Заранее благодарю за помощь .
AlexsSyrДата: Вторник, 22 Ноября 2016, 07:44 | Сообщение # 8 | Тема: Не создаёт константный буфер.
почетный гость
Сейчас нет на сайте
Графику рисует, шейдеры грузит, а вот при попытке создать буфер констант для шейдеров возвращает ошибку.
AlexsSyrДата: Вторник, 22 Ноября 2016, 06:37 | Сообщение # 9 | Тема: Не создаёт константный буфер.
почетный гость
Сейчас нет на сайте
Да, результат такой же.
AlexsSyrДата: Вторник, 22 Ноября 2016, 05:10 | Сообщение # 10 | Тема: Не создаёт константный буфер.
почетный гость
Сейчас нет на сайте
Пытаюсь создать константный буфер, постоянно возвращает ошибку.
Код
void GXD3Dshader::SetConstantBuffer(UINT structSize, GXD3D & gx)
    {
  D3D11_BUFFER_DESC bd;
  ZeroMemory(&bd, sizeof(bd));
  bd.Usage = D3D11_USAGE_DEFAULT;
  bd.ByteWidth = sizeof(ConstantBuffer);  // ������ ������ = ������� ���������
  bd.BindFlags = D3D11_BIND_CONSTANT_BUFFER;    // ��� - ����������� �����
  bd.CPUAccessFlags = 0;

  if (FAILED(gx.Device->CreateBuffer(&bd, NULL, &ConstantBuffer)))
   MessageBox(NULL, L"Чёртов буфер", L"Ошибка", MB_OK);

    }

Подскажите, в чём может быть дело.

Полный код:
AlexsSyrДата: Вторник, 18 Октября 2016, 20:04 | Сообщение # 11 | Тема: Как реализовать масштабирование карты ?
почетный гость
Сейчас нет на сайте
Имеется карта составленная из различных объектов-стран.
Подскажите как реализовать масштабирование такой карты ?
AlexsSyrДата: Среда, 10 Августа 2016, 12:45 | Сообщение # 12 | Тема: Перевод экранных координат в мировые.
почетный гость
Сейчас нет на сайте
Посмотрел статью, переписал под LWJGL. Что-то работает не корректно.

Матрица проекции
Код

////////////////////////////////////
camera.SetProjection(90, 0.1f, 8);
/////////////////////////////

  public void SetProjection(float angle, float nearPlace, float farPlace)
    {
        float aspectRatio = (float)Display.getWidth() / (float)Display.getHeight();
        float y_scale = (float)(1f / Math.tan(Math.toRadians(angle / 2f))) * aspectRatio;
        float x_scale = y_scale / aspectRatio;
        float frustum_length = farPlace - nearPlace;
        
        Projection.m00 = x_scale;
        Projection.m11 = y_scale;
        Projection.m22 = -((farPlace + nearPlace) / frustum_length);
        Projection.m23 = -1;
        Projection.m32 = -((2 * nearPlace * farPlace) / frustum_length);
        Projection.m33 = 0;
        
    }



Матрица вида

Код

camera.rx = 90;
camera.y = 8;
camera.SetView();
////////////////////////////////////////

public void SetView()
    {
        View.setIdentity();
        Matrix4f.rotate((float)Math.toRadians(rx), new Vector3f(1,0,0), View, View);
        Matrix4f.rotate((float)Math.toRadians(ry), new Vector3f(0,1,0), View, View);
        Matrix4f.rotate((float)Math.toRadians(rz), new Vector3f(0,0,1), View, View);
        Matrix4f.translate(new Vector3f(-x,-y,z), View, View);
    }


Код

  public static Vector4f UnProject(Camera cam, Point2f pos)
    {
     
    Matrix4f VPinvert = new Matrix4f();
    Vector4f Res = new Vector4f();
    
    float winZ = 1;
    
    float x = Main.Zoom;
    
    Res.x =(2.0f*((float)(pos.x-0)/(Display.getWidth()-0)))-1.0f;
    Res.y =1.0f-(2.0f*((float)(pos.y-0)/(Display.getHeight()-0)));
//   Res.z = (float)(2.0 * winZ -1.0);

  Res.z = 1;
    Res.w = (float) 1.0;      
    
    Matrix4f.mul(cam.View, cam.Projection, VPinvert);
    Matrix4f.invert(VPinvert, VPinvert);
    
    Res.x = (Res.x * VPinvert.m00) + (Res.y * VPinvert.m10) + (Res.z * VPinvert.m20) + (Res.w * VPinvert.m30);
    Res.y = (Res.x * VPinvert.m01) + (Res.y * VPinvert.m11) + (Res.z * VPinvert.m21) + (Res.w * VPinvert.m31);
    Res.z = (Res.x * VPinvert.m02) + (Res.y * VPinvert.m12) + (Res.z * VPinvert.m22) + (Res.w * VPinvert.m32);
    Res.w = (Res.x * VPinvert.m03) + (Res.y * VPinvert.m13) + (Res.z * VPinvert.m23) + (Res.w * VPinvert.m33);    
    
    Res.x /= Res.w;
    Res.y /= Res.w;
    Res.z /= Res.w;
    
    return Res;
        
    }


Нажима на точку с координатами (1,1), получаю значения (0.004219624;0.16776733;-0.033905927;29.493368)
В чём проблема ?
help


Сообщение отредактировал AlexsSyr - Среда, 10 Августа 2016, 23:35
AlexsSyrДата: Четверг, 21 Июля 2016, 13:07 | Сообщение # 13 | Тема: Перевод экранных координат в мировые.
почетный гость
Сейчас нет на сайте
А чему должен быть равен depth ?
AlexsSyrДата: Среда, 20 Июля 2016, 21:54 | Сообщение # 14 | Тема: Перевод экранных координат в мировые.
почетный гость
Сейчас нет на сайте
Подскажите пожалуйста как с помощью матричных преобразований перевести экранные координаты в мировые ?
Пробовал матрицу вида умножить на матрицу проекции, затем инвертировать их произведение. Потом 2D координаты умножить на эту инвертированную матрицу.
Однако возвращает значение далеко не такое какое должно быть.
AlexsSyrДата: Суббота, 02 Июля 2016, 09:00 | Сообщение # 15 | Тема: Как реализовать двойную буферизацию в Java3D ?
почетный гость
Сейчас нет на сайте
Начал писать программу с Java3D, однако при растяжении окна возникает мерцание. Как я понимаю это связанно с тем что кадр сразу рисуется на экран, подскажите как сделать двойную буферизацию ?
AlexsSyrДата: Четверг, 12 Мая 2016, 17:05 | Сообщение # 16 | Тема: Где достать PhysX SDK ?
почетный гость
Сейчас нет на сайте
Подскажите где достать PhysX SDK ? Регестрировался на NvidiaDev но там для загрузки только плагины.
AlexsSyrДата: Воскресенье, 10 Января 2016, 23:03 | Сообщение # 17 | Тема: Реализация достижений.
почетный гость
Сейчас нет на сайте
Пишу проект на AndroidStudio, решил добавить достижения, но найти достаточно информации не смог. Нашёл разные плагины для движков, но для jave информации нашёл мало. Может кто помочь ? Скинуть пример или ссылку на статью ? Заранее благодарен.
AlexsSyrДата: Четверг, 05 Ноября 2015, 14:18 | Сообщение # 18 | Тема: Потеря устройства вместе с мешами.
почетный гость
Сейчас нет на сайте
Сворачиваю программу ALT + TAB. Открываю снова и меши исчезают.

Код начала сцены.
Код
void D3DstartRendering(){

  if(Device->TestCooperativeLevel() == D3DERR_DEVICENOTRESET && Device != NULL)  //Востанавливаем устройство при потере
   Device->Reset(&Param);

  if (Device != NULL) {
   Device->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
    ClearColor, 1.0f, 0);
   // Начало сцены, здесь происходит прорисовка сцены
   Device->BeginScene();
  }
    }


Код

Класс для работы с мешами.
#include "stdafx.h"
#include "Xmesh.h"

using namespace System;
using namespace System::Runtime::InteropServices;

namespace GearX {

    Mesh MyMesh;
    LPDIRECT3DDEVICE9 device;

    Xmesh::Xmesh(String^ filename)
    {
  l_FileName = filename;
    }

    void Xmesh::Xload(D3D^ d3d) {
  D3DXLoadMeshFromXA((char*)Marshal::StringToHGlobalAnsi(l_FileName).ToPointer(), D3DXMESH_SYSTEMMEM,
   *d3d->D3DgetDevice(), NULL, &MyMesh.pMeshBuffer, NULL,
   &MyMesh.dwNumber, &MyMesh.pMesh);

  // Мы должны извлечь материальные свойства и названия{имена} структуры от
  // pD3DXMtrlBuffer
  D3DXMATERIAL* D3DXMeshMaterials = (D3DXMATERIAL *)MyMesh.pMeshBuffer->GetBufferPointer();
  MyMesh.pMeshMaterials = new D3DMATERIAL9[MyMesh.dwNumber];
  MyMesh.pMeshTextura = new LPDIRECT3DTEXTURE9[MyMesh.dwNumber];
  for (DWORD i = 0; i<MyMesh.dwNumber; i++)
  {
   // Копируем материал
   MyMesh.pMeshMaterials[i] = D3DXMeshMaterials[i].MatD3D;
   // Установить окружающего свет
   MyMesh.pMeshMaterials[i].Ambient = MyMesh.pMeshMaterials[i].Diffuse;
   // Загружаем текстуру
   if (FAILED(D3DXCreateTextureFromFileA(*d3d->D3DgetDevice(),
    D3DXMeshMaterials[i].pTextureFilename,
    &MyMesh.pMeshTextura[i])))
    MyMesh.pMeshTextura[i] = NULL;
  }
  // Уничтожаем материальный буфер
  MyMesh.pMeshBuffer->Release();

  device = *d3d->D3DgetDevice();

    }

    void Xmesh::Xdraw()
    {
  for (DWORD i = 0; i<MyMesh.dwNumber; i++)
  {
   // Устанавливаем материал и текстуру
   device->SetMaterial(&MyMesh.pMeshMaterials[i]);
   device->SetTexture(0, MyMesh.pMeshTextura[i]);
   // Рисуем Меш
   MyMesh.pMesh->DrawSubset(i);
  }
    }
}


В чём причина ?


Сообщение отредактировал AlexsSyr - Четверг, 05 Ноября 2015, 14:19
AlexsSyrДата: Понедельник, 17 Августа 2015, 09:54 | Сообщение # 19 | Тема: COM Interface
почетный гость
Сейчас нет на сайте
Пишу Dll на С++, хочу подключить к проекту на С#.

Подключал через DLLImport, всё работает,но...
Использование DllImport в моём случае не удобно, функции с 20-30 аргументами очень не удобно использовать. Следовательно нужны структуры из моей DLL.

Пытаюсь подключить через ссылки и подключить моё пространство имён.
Библиотека подключается к ссылкам, но моего пространства имён VS не видит.

Прочитал про COM интерфейсы, но подробной информации не нашел.
У меня уже есть готовый класс, подскажите как запихнуть его в COM интерфейс.
AlexsSyrДата: Вторник, 07 Июля 2015, 22:03 | Сообщение # 20 | Тема: Проблема с камерой от первого лица .
почетный гость
Сейчас нет на сайте
Это функция движения влево, а не поворота, а dt это точное число миллисекунд. Для получения dt я использовал вот это
https://msdn.microsoft.com/ru-ru/library/system.diagnostics.stopwatch(v=vs.110).aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1

Добавлено (07 июля 2015, 22:03)
---------------------------------------------
Вся проблема в том что я не просто двигаю камеру, игрок является физическим объектом.

Сообщение отредактировал AlexsSyr - Вторник, 07 Июля 2015, 21:58
Форум игроделов » Записи участника » AlexsSyr [82]
  • Страница 1 из 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск:

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