rendering a 360 Panorama (Cyclorama) to 8 screens

I want to do just the same thing. I do not want one giant window. But many small ones. And i want to put those on different screens( one per player).

When i start the simulation that works perfectly fine for me, just as you ve described before. But i would have to drag an drop the windows to the correct screens and positions.

Thus i used code similiar to that from the post you mentioned: How to set window position and border - Rendering - Epic Developer Community Forums

But this code has no effect when i run the simulation as PIE. It only takes affect when i lunch it as complete game, but than i can only see the window of player 1.

Summarized: I want one window per player and render it in fullscreen quadbuffered stereo to one specific screen.

It would be even nicer when if i would be able to tell the engine what window gets computed by which card. (we got 2 quadro cards in sli so i guess that should be enough for some test applications.)

Can you may help me with that information given?

Sory for the missunderstandings.

Is there may be any other way we could get in contact with eacht other.

Because i have to finish this soon and urgent.

Thanks in advance.

I do not know how far you are progressed with your project right now but this might help you: Two windows in a program - Platform & Builds - Epic Developer Community Forums

I am trieng it out my self right now and would like to share experiences here if you are ok with that.

Awesome!
Not sure I need it. Maybe I do…

some random stuff:

Accessing Blueprint components from C++

This is how to find a spline component, which is using Blueprints and put into the world using the editor.

//“MovementPathSpline” is the name given using the Blueprint editor
const FString movementPathSplineName = “MovementPathSpline”;
USplineComponent* aSplineComponent;

BeginPlay(){

//iterate over all spline components
for ( TObjectIterator<USplineComponent> Itr; Itr; ++Itr ) {
USplineComponent *component = *Itr;
//is it part of the current map (world)?
if (component->GetWorld() == GetWorld()) {
//print name of SplineComponent set using the Blueprint editor.
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Cyan, component->GetName());

// check for the correct name
const FString componenName = component->GetName();
bool result = movementPathSplineName.Equals(componenName);
if(result) {
//assign pointer to aSplineComponent
aSplineComponent = component;
}
}
}
}

aSplineComponent can now be used to add points to the spline using c++

// how to get the viewport, the frame containing the viewport and how to get the size of the viewport and how to resize the frame containing the viewport.
//Running this within the editor’s viewport pretty much crashes the editor.

const FVector2D viewportSize = FVector2D(GEngine->GameViewport->Viewport->GetSizeXY());
FViewportFrame* viewPortFrame = GEngine->GameViewport->ViewportFrame;
const FString viewPortInfoString = viewportSize.ToString();
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, viewPortInfoString);
viewPortFrame->ResizeFrame(0,0,EWindowMode::Type::Windowed ,1024,786);

Awesome! And thanks.

I am now close to achieve what we wanted.

This might help you too:

//And how to actually find the actor “SplineActor” implemented using Blueprints

for ( TObjectIterator&lt;AActor&gt; Itr; Itr; ++Itr ) {
    AActor *component = *Itr;
    if (component-&gt;GetWorld() == GetWorld()) {
        const FString actorName = component-&gt;GetName();
        if(actorName.Contains("SplineActor")) {
            GEngine-&gt;AddOnScreenDebugMessage(-1, 5.f, FColor::Cyan, actorName);
        }
    }
}

Thanks a lot!

I have been having problems setting the position of a Blueprint spline actor I created following this tutorial: https://www.youtube.com/watch?v=bgANV-VTJrw&list=PLHadbgEqCTxDgj-RwPQGkaUypb05NJYN6&index=3

I want to visualize the movement path of my player using a spline curve. So, at the very beginning I want to set start location of the spline curve to the start location of my player.

// Within ::BeginPlay() I get the pointer to the SplineActor and the USplineComponent like this:

for ( TObjectIterator&lt;AActor&gt; Itr; Itr; ++Itr ) {
    AActor *actor = *Itr;
    if (actor-&gt;GetWorld() == GetWorld()) {
        const FString actorName = actor-&gt;GetName();
        if(actorName.Contains("SplineActor")) {
            GEngine-&gt;AddOnScreenDebugMessage(-1, 5.f, FColor::Cyan, actorName);
            splineActor = actor;
        }
    }
}

for ( TObjectIterator&lt;USplineComponent&gt; Itr; Itr; ++Itr ) {
    USplineComponent *component = *Itr;
    if (component-&gt;GetWorld() == GetWorld()) {
        GEngine-&gt;AddOnScreenDebugMessage(-1, 5.f, FColor::Cyan, component-&gt;GetName());
        const FString componentName = component-&gt;GetName();
        bool result = movementPathSplineName.Equals(componentName);
        if(result) {
            aSplineComponent = component;
        }
    }
}

// and then, I set the new location:

FVector actorLocation = GetActorLocation();
splineActor-&gt;SetActorLocation(actorLocation,false);
aSplineComponent-&gt;SetWorldLocation(actorLocation,false);

Initially, setting the location had zero effect. Well, at least visually, nothing seemed to happen.
Turns out you have to remove the check within “Add Static Mesh Component” and effectively set manual attachment to automatic instead of manual.
The Blueprint is attached to this comment.

I want to use 9 cameras in total. 8 cameras, because of th 8 views and a 9th camera for showing the scene from the top.
So, I assign the 8 cameras as shown using the “Auto Activate” from the editor.
for the 9th camera I am doing the same thing, but from c++, since the editor only allows us to do this for up to 8 cameras.

I am searching for the correct cameras by name like this within my custom GameMode:

for (TObjectIterator&lt;ACameraActor&gt; Itr; Itr; ++Itr) {
    ACameraActor *actor = *Itr;
    if (actor-&gt;GetWorld() == GetWorld()) {
        const FString actorName = actor-&gt;GetName();
        if(actorName.Equals("SpectatorCamera")) {
            GEngine-&gt;AddOnScreenDebugMessage(-1, 5.f, FColor::Cyan, actorName);
            SpectatorCamera_ptr = actor;
   }
}

once I have found the CameraActor, I do this:

    APlayerController* PlayerControllerPtr = UGameplayStatics::GetPlayerController(GetWorld(), 8);
    GetWorld()-&gt;RegisterAutoActivateCamera(SpectatorCamera_ptr, 8);
    if(PlayerControllerPtr) {
        PlayerControllerPtr-&gt;SetViewTarget(SpectatorCamera_ptr);
    }

I found this within the source code of ACameraActor

if you still interested in what i am doing here is a little demo: