Introducció
La realitat virtual (VR) és una tecnologia que permet als usuaris submergir-se en un entorn generat per ordinador, interactuant amb aquest de manera immersiva. Unreal Engine és una eina potent per al desenvolupament de VR gràcies a les seves capacitats gràfiques avançades i la seva flexibilitat. En aquest mòdul, aprendrem a configurar un projecte de VR, a crear interaccions bàsiques i a optimitzar el rendiment per a una experiència fluida.
Continguts
Configuració del Projecte per a VR
Passos per Configurar el Projecte
- 
Instal·lació dels Plugins Necessaris:
- Obre el teu projecte a Unreal Engine.
 - Ves a 
Edit>Plugins. - Activa els plugins de VR com 
Oculus VR,SteamVR, o qualsevol altre que necessitis segons el teu dispositiu. 
 - 
Configuració del Mode de VR:
- Ves a 
Edit>Project Settings. - A la secció 
Engine>Input, assegura't que els controls de moviment i interacció estiguin configurats correctament. - A la secció 
Platforms>VR, activa les opcions necessàries per al teu dispositiu VR. 
 - Ves a 
 - 
Configuració de la Càmera VR:
- Afegeix un 
Pawnal teu nivell. - Afegeix un component 
CameraalPawni assegura't que estigui configurat per a VR. 
 - Afegeix un 
 
Exemple de Configuració de la Càmera
// MyVRPawn.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Pawn.h"
#include "MyVRPawn.generated.h"
UCLASS()
class MYPROJECT_API AMyVRPawn : public APawn
{
    GENERATED_BODY()
public:
    AMyVRPawn();
protected:
    virtual void BeginPlay() override;
public:	
    virtual void Tick(float DeltaTime) override;
    UPROPERTY(VisibleAnywhere)
    class UCameraComponent* VRCamera;
};
// MyVRPawn.cpp
#include "MyVRPawn.h"
#include "Camera/CameraComponent.h"
AMyVRPawn::AMyVRPawn()
{
    PrimaryActorTick.bCanEverTick = true;
    VRCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("VRCamera"));
    VRCamera->SetupAttachment(RootComponent);
}
void AMyVRPawn::BeginPlay()
{
    Super::BeginPlay();
}
void AMyVRPawn::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);
}Creació d'Interaccions Bàsiques
Interacció amb Objectes
- 
Creació d'un Component de Mà:
- Afegeix un component 
MotionControlleral teuPawn. - Assigna el 
MotionControllera la mà esquerra o dreta. 
 - Afegeix un component 
 - 
Detecció de Col·lisions:
- Afegeix un component 
SphereComponentalMotionControllerper detectar col·lisions amb objectes interactius. 
 - Afegeix un component 
 - 
Implementació de la Interacció:
- Utilitza Blueprints o C++ per definir les accions que es realitzaran quan es detecti una col·lisió.
 
 
Exemple d'Interacció amb Objectes
// MyVRPawn.h
UPROPERTY(VisibleAnywhere)
class USphereComponent* InteractionSphere;
// MyVRPawn.cpp
AMyVRPawn::AMyVRPawn()
{
    InteractionSphere = CreateDefaultSubobject<USphereComponent>(TEXT("InteractionSphere"));
    InteractionSphere->SetupAttachment(MotionController);
    InteractionSphere->OnComponentBeginOverlap.AddDynamic(this, &AMyVRPawn::OnOverlapBegin);
}
void AMyVRPawn::OnOverlapBegin(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult)
{
    if (OtherActor && (OtherActor != this) && OtherComp)
    {
        // Implementa la lògica d'interacció aquí
    }
}Optimització del Rendiment
Consells per Optimitzar el Rendiment
- 
Redueix la Complexitat Gràfica:
- Utilitza models amb menys polígons.
 - Redueix la resolució de les textures.
 
 - 
Utilitza LODs (Levels of Detail):
- Configura LODs per als teus models per reduir la complexitat a mesura que es troben més lluny de la càmera.
 
 - 
Optimitza els Blueprints:
- Evita l'ús excessiu de 
Ticken Blueprints. - Utilitza esdeveniments i funcions en lloc de lògica contínua.
 
 - Evita l'ús excessiu de 
 - 
Gestió de la Memòria:
- Allibera recursos que no s'estan utilitzant.
 - Utilitza 
Garbage Collectionde manera eficient. 
 
Exercicis Pràctics
Exercici 1: Configuració del Projecte VR
- Crea un nou projecte a Unreal Engine.
 - Configura els plugins necessaris per a VR.
 - Afegeix un 
Pawnamb una càmera configurada per a VR. 
Exercici 2: Interacció Bàsica
- Afegeix un component 
MotionControlleral teuPawn. - Implementa una esfera de col·lisió per detectar objectes.
 - Defineix una acció que es realitzi quan es detecti una col·lisió.
 
Exercici 3: Optimització
- Redueix la complexitat gràfica del teu projecte.
 - Configura LODs per als teus models.
 - Optimitza els Blueprints per millorar el rendiment.
 
Conclusió
El desenvolupament de realitat virtual amb Unreal Engine ofereix una experiència immersiva i interactiva. Amb la configuració adequada, la creació d'interaccions bàsiques i l'optimització del rendiment, pots crear aplicacions VR que siguin tant atractives com eficients. Practica amb els exercicis proporcionats per consolidar els teus coneixements i prepara't per portar els teus projectes VR al següent nivell.
Curs d'Unreal Engine
Mòdul 1: Introducció a Unreal Engine
- Què és Unreal Engine?
 - Instal·lant Unreal Engine
 - Navegant per la Interfície
 - Creant el teu Primer Projecte
 
Mòdul 2: Conceptes Bàsics
Mòdul 3: Blueprints Intermedis
- Variables i Tipus de Dades
 - Funcions i Esdeveniments
 - Comunicació entre Blueprints
 - Creant Objectes Interactius
 
Mòdul 4: Blueprints Avançats
Mòdul 5: Programació en C++ a Unreal Engine
- Configurant el teu Entorn de Desenvolupament
 - Sintaxi Bàsica de C++
 - Creant Classes en C++
 - Integrant C++ amb Blueprints
 
Mòdul 6: Programació Avançada en C++
Mòdul 7: Temes Avançats
- Física i Col·lisió
 - Renderització i Postprocessament
 - Generació de Contingut Procedural
 - Desenvolupament de Realitat Virtual
 
