tweak(ship-3d): pitch -120° i naus planes (sense extrusió)
This commit is contained in:
@@ -125,18 +125,19 @@ namespace Graphics {
|
||||
|
||||
const float HALF = depth * 0.5F;
|
||||
const Vec2 CENTRE = shape.getCenter();
|
||||
// Si depth <= 0, emetem només un pla (sense vèrtexs back ni connexions)
|
||||
// per evitar arestes degenerades i acumulació additiva de brightness.
|
||||
const bool FLAT = (depth <= 0.0F);
|
||||
|
||||
for (const auto& primitive : shape.getPrimitives()) {
|
||||
if (primitive.points.size() < 2) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Reserva: 2 còpies (front/back) de cada vèrtex de la primitiva.
|
||||
const auto BASE = static_cast<std::uint16_t>(mesh.vertices.size());
|
||||
const auto N = static_cast<std::uint16_t>(primitive.points.size());
|
||||
|
||||
// Insereix vèrtexs frontals (z = +HALF) i posteriors (z = -HALF).
|
||||
// Còpia centrada respecte al "center" del shape.
|
||||
// Vèrtexs frontals (z = +HALF, o z = 0 si FLAT).
|
||||
for (const auto& p : primitive.points) {
|
||||
mesh.vertices.push_back(Vec3{
|
||||
.x = p.x - CENTRE.x,
|
||||
@@ -144,6 +145,16 @@ namespace Graphics {
|
||||
.z = HALF,
|
||||
});
|
||||
}
|
||||
// Arestes "frontals": connecten punts consecutius de la polyline.
|
||||
for (std::uint16_t i = 0; i + 1 < N; ++i) {
|
||||
mesh.edges.emplace_back(BASE + i, BASE + i + 1);
|
||||
}
|
||||
|
||||
if (FLAT) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Vèrtexs posteriors (z = -HALF) i arestes corresponents.
|
||||
for (const auto& p : primitive.points) {
|
||||
mesh.vertices.push_back(Vec3{
|
||||
.x = p.x - CENTRE.x,
|
||||
@@ -151,12 +162,6 @@ namespace Graphics {
|
||||
.z = -HALF,
|
||||
});
|
||||
}
|
||||
|
||||
// Arestes "frontals": connecten punts consecutius de la polyline al davant.
|
||||
for (std::uint16_t i = 0; i + 1 < N; ++i) {
|
||||
mesh.edges.emplace_back(BASE + i, BASE + i + 1);
|
||||
}
|
||||
// Arestes "posteriors": idem al darrere.
|
||||
for (std::uint16_t i = 0; i + 1 < N; ++i) {
|
||||
mesh.edges.emplace_back(BASE + N + i, BASE + N + i + 1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user