70 lines
1.6 KiB
C#
70 lines
1.6 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Godot;
|
|
using System;
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Rokojori
|
|
{
|
|
[Tool][GlobalClass]
|
|
public partial class Flat_Baker:_XX_MultiBakeModeBillboardBase
|
|
{
|
|
[Export]
|
|
public float yawOffset = 0;
|
|
|
|
public override int GetNumViews()
|
|
{
|
|
return 2;
|
|
}
|
|
|
|
public override void CreateBakers()
|
|
{
|
|
var fov = multiBaker.GetCameraFOV();
|
|
var distance = multiBaker.GetCameraDistance();
|
|
var outputScale = multiBaker.GetOutputScale();
|
|
|
|
RJLog.Log( "outputScale", outputScale );
|
|
var bakerCameras = multiBaker.bakerCameras;
|
|
var mb = multiBaker;
|
|
|
|
|
|
bakerCameras.ForEach(
|
|
bk =>
|
|
{
|
|
var vs = bk.viewSettings;
|
|
vs.fovDistance = Manual_BakingFDSettings.Create( fov, distance );
|
|
vs.rotationMode = BakingViewSettings.RotationMode.Yaw_Pitch;
|
|
}
|
|
);
|
|
|
|
var mg = new MeshGeometry();
|
|
|
|
var numTextures = GetNumViews();
|
|
var textureAlignment = TextureMerger.ComputeTextureAlignment( numTextures );
|
|
|
|
|
|
var angle = yawOffset;
|
|
|
|
for ( int i = 0; i < numTextures; i++ )
|
|
{
|
|
var index = i;
|
|
|
|
bakerCameras[ index ].viewSettings.yaw = angle + i * 180f;
|
|
bakerCameras[ index ].viewSettings.pitch = 0;
|
|
|
|
var uv = TextureMerger.GetUVRectangle( textureAlignment, index, true );
|
|
|
|
var q = new MeshGeometry();
|
|
q.AddQuad( bakerCameras[ index ].viewSettings.bakingRotation, outputScale, uv.min, uv.max );
|
|
|
|
mg.Add( q );
|
|
|
|
}
|
|
|
|
|
|
mb.X_outputMesh.Mesh = mg.GenerateMesh();
|
|
}
|
|
|
|
}
|
|
} |