Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Montjet

Strony: [1] 2 3 4 5 ... 7
1
Unreal Engine (UE3/UDK) / Odp: Pytanie dot. UE4 oraz ARCore
« dnia: Maj 22, 2018, 17:26:45 »
Arcore wspiera wąskie grono urządzeń. Upewnij się, czy twoje urządzenie zawiera się w tej liście :https://developers.google.com/ar/discover/supported-devices



2
Problem rozwiązany.

3
OpenGL / Odp: PBO - synchronizacja, czy potrzebna?
« dnia: Kwiecień 02, 2018, 15:17:55 »
1. A jak to jest z glMapBuffer, czy jeśli chcę zaktualizować wyłącznie kilkanaście wybranych pikseli, to czy ta funkcja wyśle wyłącznie te dane do VRAM?Czy zawsze to będzie całość, czyli moje zaktualizowane dane + niezmienione?

2. Co w przypadku, gdy na początku przygotuję sobie teksturę (wgram dane), a następnie będę chciał aktualizować ją (nie w całości) - czy dane w PBO, które nie edytuję nadpiszą dane tekstury wartościami losowymi plus zaktualizowanymi?
Zrobiłem test i już wiem, że wyśle całość, a więc potrzeba dodatkowych operacji aby tego uniknąć, bo się da.

Cytuj
Nie ma czegoś takiego w OpenGL jak glRender, rozumiem że to jest twoja funkcja, która rysuje scenę.
Miałem na myśli jakąkolwiek funkcję rysującą OpenGL'a.

4
OpenGL / PBO - synchronizacja, czy potrzebna?
« dnia: Marzec 27, 2018, 21:15:41 »
Cześć!
Stworzyłem sobie obiekt bufora piksela (PBO) w celu asynchronicznej aktualizacji części danych tekstury (niekoniecznie co klatkę).
Tekstura musi być gotowa przed wykorzystaniem jej do renderowania.
Czy jeśli nie skorzystam z glFenceSync tekstura zawsze będzie już zaktualizowana przed wywołaniem glRender?
Albo np. zlecić aktualizacje na samym końcu pętli, tak by w następnej klatce była już gotowa? A może jestem zmuszony do korzystania z obiektów synchronizacji?

I jeszcze jedno, nie znalazłem informacji czy można stosować tą metodę do aktualizacji skompresowanej tekstury? (oczywiście blokami, tak jak jest skompresowana).

5
OpenGL / Terrain - OpenGL i bullet - strategia
« dnia: Marzec 12, 2018, 16:24:07 »
Cześć,
Do tej pory teren tworzyłem poprzez zdefiniowanie statycznej siatki, którą potem teselowałem w shaderach. Wartość wysokości była pobierana również w shaderze. Niestety teraz pojawił się mały (a raczej duży) problem.
Potrzebuję dodać teren jako collider w bibliotece Bullet.
Modele postaci posiadają kości, które w chwili śmierci stają się bezwładną kukiełką - rigid body, dlatego też musi być jakieś oddziaływanie z geometrię terenu.

Jakieś rady jak to obejść? Czy powinienem ładować, aktualizować całą siatkę (wraz z wartościami wysokośći) po stronie klienta (CPU)?
A może dalej wykonywać te same czynności jak do te pory, a do Bullet'a przesyłać siatkę terenu z maksymalnym poziomem szczegółowości?
Jakieś inne porady?

6
Unreal Engine (UE3/UDK) / HTML5 - błąd podczas GET REQUEST
« dnia: Marzec 04, 2018, 19:43:45 »
Cześć!
Tym razem mam problem z pobraniem zawartości pliku z podanego adresu URL z skompilowanym projektem do HTML5.

Kod cpp:
// Fill out your copyright notice in the Description page of Project Settings.

#include "HttpTest.h"
#include "Engine.h"

// Sets default values
AHttpTest::AHttpTest()
{
    // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
    UE_LOG(LogTemp, Warning, TEXT("Creating WebManager..."));
    PrimaryActorTick.bCanEverTick = true;

    // Get the HTTP module
    m_http = &FHttpModule::Get();
m_http->SetHttpTimeout(600);

}

void AHttpTest::Destroyed()
{
    UE_LOG(LogTemp, Warning, TEXT("Destroying WebManager..."));
}

// Http call
void AHttpTest::GetData()
{
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("Getting  data..."));

TSharedRef<IHttpRequest> Request = m_http->CreateRequest();
Request->OnProcessRequestComplete().BindUObject(this, &AHttpTest::OnResponseReceived);
//Request->OnRequestProgress().BindUObject(this, &)

Request->SetURL("localhost/software/testData");
Request->SetVerb("GET");
Request->SetHeader(TEXT("User-Agent"), "X-UnrealEngine-Agent");
Request->SetHeader("Content-Type", TEXT("application/json"));
Request->ProcessRequest();


}

// Assigned function on successfull http call
void AHttpTest::OnResponseReceived(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
{
if (GEngine)
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("Response received!"));

m_names.Empty();
m_names.Add(FString::FormatAsNumber(Request->GetStatus()));
m_listUpdated.Broadcast(m_urls, m_names);

}

Zwracany kod statusu: 2, co oznacza: "Failed because it was unable to connect (safe to retry) ".
Jakiś pomysł jak to naprawić?

W edytorze wszystko śmiga dobrze.
Próbowałem tez globalne adresy stron.

7
Cześć,
skompilowałem sobie assimpa (statycznego, bez dll) w wersji x64 - w edytorze assimp działa prawidłowo.
Modele ładują się poprawnie.

Problem jest jednak z zbudowaniem HTML5.
To samo zresztą jest z pluginem RuntimeMeshComponent.

Błąd i w visualu i w edytorze:
UnrealBuildTool: error: unresolved symbol: _ZNK6Assimp8Importer14GetErrorStringEv
 UnrealBuildTool: error: unresolved symbol: _ZN6Assimp8ImporterD1Ev
 UnrealBuildTool: error: unresolved symbol: _ZN6Assimp8Importer18ReadFileFromMemoryEPKvjjPKc
 UnrealBuildTool: error: unresolved symbol: _ZN6Assimp8Importer8ReadFileEPKcj
 UnrealBuildTool: error: unresolved symbol: _ZN6Assimp8ImporterC1Ev
 UnrealBuildTool: error: unresolved symbol: _ZN23FRuntimeMeshIndexTraitsItE7Is32BitE

Są to statyczne liby, także nie wiem co o tym myśleć.
Jakiś pomysł jak to naprawić?

Build.cs:
// Fill out your copyright notice in the Description page of Project Settings.
 
 using UnrealBuildTool;
 using System.IO;
 
 public class HomeProject : ModuleRules
 {
     public HomeProject(ReadOnlyTargetRules Target) : base(Target)
     {
         PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
     
         PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "Http", "Json", "JsonUtilities", "ShaderCore", "RenderCore", "RHI", "RuntimeMeshComponent" });
 
         PrivateDependencyModuleNames.AddRange(new string[] {  });
 
         //PublicAdditionalLibraries.Add(Path.Combine(LibrariesPath, "assimp-vc140-mt.lib"));
 
 
         string PathToProject = "C:\\Users\\Adam\\Documents\\Unreal Projects\\HomeProject";
         PublicIncludePaths.Add(Path.Combine(PathToProject, "Source\\HomeProject\\include"));
         string PlatformString = (Target.Platform == UnrealTargetPlatform.Win64) ? "Win64" : "Win32";
         string LibrariesPath = Path.Combine(PathToProject, "Binaries", PlatformString);
 
         PublicAdditionalLibraries.Add(Path.Combine(LibrariesPath, "assimp-vc140-mt.lib"));
PublicAdditionalLibraries.Add(Path.Combine(LibrariesPath, "zlibstatic.lib"));
 
         // Uncomment if you are using Slate UI
         // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
 
         // Uncomment if you are using online features
         // PrivateDependencyModuleNames.Add("OnlineSubsystem");
 
         // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
     }

8
Cześć,
jestem początkujący w unreal engine i potrzebuje pomocy.

mam widget opisujący graficzne menu.

AMyGameModeBase jest napisane w C++.
I teraz chcę by zawartość tekstu (w widget) po wywołaniu funkcji
char* Test();

znajdująca się wewnątrz klasy AMyGameModeBase zmienił się.
Myślałem żeby zrobić tą funkcję jako event ale jak to zrobić?

kod AMyGameMode:
void AMyGameModeBase::BeginPlay()
{
    if (hudClass != nullptr)
    {
        currentWidget = CreateWidget<UUserWidget>(GetWorld(), hudClass);
        if (currentWidget != nullptr)
        {
            currentWidget->AddToViewport();
        }
    }
}

char* AMyGameModeBase::Test()
{
    return "napis zmieniony";
}

Plik .h
class BLINDPROJECT_API AMyGameModeBase : public AGameModeBase
{
    GENERATED_BODY()

    virtual void BeginPlay() override;

protected:
    UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Test", Meta = (BlueprintProtected = "true"))
        TSubclassOf <class UUserWidget> hudClass;

    UPROPERTY()
        class UUserWidget* currentWidget;

public:
    AMyGameModeBase();

    char* Test();

};

9
Programowanie grafiki / OpenMesh - wyciąganie indeksów
« dnia: Luty 22, 2018, 11:44:55 »
Cześć,
jak z OpenMesh z obiektu typu:
typedef OpenMesh::TriMesh_ArrayKernelT<>  MyMesh;

wyciągnąć indeksy aby przekazać je dalej do przetwarzania np. przez OpenGL?
Jak iterować po indeksach?

Z wierzchołkami nie miałem problemu (iteracja po wierzchołkach face'a):
for (auto f_it = mesh.faces_begin(); f_it != mesh.faces_end(); ++f_it)
    {
        auto fvIt = mesh.cfv_iter(*f_it);
        std::cout << mesh.point(*fvIt) << " : ";
        ++fvIt;
        std::cout << mesh.point(*fvIt) << " : ";
        ++fvIt;
        std::cout << mesh.point(*fvIt) << std::endl;
    }

i mogę je pobrać po prostu używając mesh.vertices().

???

10
Inne / Pakowanie plików gry w zaszyfrowaną postać binarną
« dnia: Luty 19, 2018, 21:09:26 »
Hej,
przyszedł czas na pakowanie plików gry w zaszyfrowaną postać binarną.
Moją uwagę przyciągnęła do siebie biblioteka PhysicsFS. Niestety z tego co mi wiadomo nie ma tam metod do szyfrowania z szybką możliwością odszyfrowywania w locie.

Jakiś pomysł czym/ jak szyfrować pliki gier jak bitmapy, dźwięk, skrypty, dane konfiguracyjne?
Używamy języka C++.

ps.
Ubiegnę nieco odpowiedzi, planujemy wprowadzić modding ale z jednoczesną ochroną już dostarczonych plików, a przynajmniej przed mniej obeznaną częścią graczy.

11
Wczytuję sobie ATI1,
jako format podaję GL_COMPRESSED_RG_RGTC2.

Przy uploadowaniu tekstury OGL wypluwa mi błąd 1281.
Dla ATI2 (format: GL_COMPRESSED_RED_RGTC1) rozmiar wyliczam tak: width * height / 2 i działa prawidłowo.

Tak samo próbuję robić dla ATI1 z marnym skutkiem. Sprawdzałem rozmiar, który zostal wskazany w nagłówku pliku DDS i on zgadza się.

kod:
glGenTextures(1, &(obj_texture));
glBindTexture(GL_TEXTURE_2D, (obj_texture));

int width = bitmap.Width();
int height = bitmap.Height();
glTexStorage2D(GL_TEXTURE_2D, bitmap.NumMipMap(),
bitmap.InternalFormat(),
width, height);

for(unsigned level = 0; level < bitmap.NumMipMap(); ++level)
{
unsigned size = width*height * 8 / 16;
glCompressedTexSubImage2D(GL_TEXTURE_2D, level,
0, 0,
width, height,
bitmap.InternalFormat(),
size,
bitmap.GetBits() + offset);

offset += size;
width  /= 2;
height /= 2;
}

Nie sprawdzałem tylko poprawności wczytanej tekstury ATI2.
Any idea?

12
OpenGL / AntTweakBar - myszka na polu tekstowym typu float = lag
« dnia: Październik 29, 2017, 18:27:49 »
Dzień dobry,
po wskazaniu myszka na pole tekstowe typu float program dostaje chwilowe opóźnienie w AntTweakBar.
Jak temu zaradzić?

Zmieniłem w TwMgr.cpp:
bool g_UseCurRsc = true;
na false ale kursor dalej zmienia się na inny, przez co występują opóźnienia.

13
Produkcja / Prawo do użytkowania tekstur w pracy dyplomowej oraz INDIE GAMES
« dnia: Październik 27, 2017, 22:05:58 »
Dzień dobry,
nie chcę strzelić gafy dlatego wolę zapytać - dla pewności.
Czy wykupując np. z tego katalogu: https://www.gametextures.com/
60 kredytów (Professional License) - bez żadnego problemu będę mógł używać pobranych tekstur w pracy dyplomowej i ew. później w INDIE GAMES?
Czy dobrze zrozumiałem, że muszę wyłącznie podać prawa autorskie w pliku read-me?

14
Niemalże napisałem algorytm na nowo - czy mi się wydaje czy ten z kursu jest totalnie zły? I to w nie jednej kwestii?

Mój jest niestety wolniejszy ale jeszcze zoptymalizuje go pod wieczór.

15
Witam, mam problem - próbuję dla depth map'y stworzyć mip mapy, gdzie wyższy poziom mip będzie przechowywał maksymalną wartość poprzedniego poziomu.

Dla depth mapy o rozmiarze potęgi dwójki działa prawidłowo - problem pojawia się z innym rozmiarem.
Algorytm GLSL:
#version 400 core

uniform sampler2D lastDepthMip;
uniform ivec2 lastMipSize;

in vec2 texCoord;

void main(void)
{
vec4 texels;
texels.x = texture(lastDepthMip, texCoord).x;
texels.y = textureOffset(lastDepthMip, texCoord, ivec2(-1, 0)).x;
texels.z = textureOffset(lastDepthMip, texCoord, ivec2(-1,-1)).x;
texels.w = textureOffset(lastDepthMip, texCoord, ivec2(0,-1)).x;

float maxZ = max(max(texels.x, texels.y), max(texels.z, texels.w));

vec3 extra;
if (((lastMipSize.x & 1) != 0 ) && (int(gl_FragCoord.x) == lastMipSize.x - 3))
{
if (((lastMipSize.y & 1) != 0 ) && (int(gl_FragCoord.y) == lastMipSize.y - 3))
{
extra.z = textureOffset(lastDepthMip, texCoord, ivec2(1, 1)).x;
maxZ = max(maxZ, extra.z);
}
extra.x = textureOffset(lastDepthMip, texCoord, ivec2( 1, 0)).x;
extra.y = textureOffset(lastDepthMip, texCoord, ivec2( 1,-1)).x;
maxZ = max(maxZ, max(extra.x, extra.y));
}

if (((lastMipSize.y & 1) != 0 ) && (int(gl_FragCoord.y) == lastMipSize.y - 3)) {
extra.x = textureOffset(lastDepthMip, texCoord, ivec2(0, 1) ).x;
extra.y = textureOffset(lastDepthMip, texCoord, ivec2(-1, 1) ).x;
maxZ = max( maxZ, max(extra.x, extra.y));
}

gl_FragDepth = maxZ;
}

Kod pochodzi z http://rastergrid.com/blog/2010/10/hierarchical-z-map-based-occlusion-culling/ (dokument o occlusion culling).
Próbowałem zmieniać przesunięcia na różne sposoby - błąd dalej występuje.
Sprawdziłem czy spełnione są kiedykolwiek warunki:
int(gl_FragCoord.x) == lastMipSize.x - 3(lastMipSize.x & 1) != 0dla tych spełniony, dla:
int(gl_FragCoord.x) == lastMipSize.x - 2niespełniony, czyli tak jak powinno być.

Jakieś sugestie?




Strony: [1] 2 3 4 5 ... 7