mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 16:15:43 +00:00
chore: set vertex color to 1.0 when no value read from gltf
This commit is contained in:
parent
db5e53e60d
commit
71819e46a4
@ -214,6 +214,7 @@ namespace
|
|||||||
|
|
||||||
const auto vertexCount = positionAccessor->GetCount();
|
const auto vertexCount = positionAccessor->GetCount();
|
||||||
NullAccessor nullAccessor(vertexCount);
|
NullAccessor nullAccessor(vertexCount);
|
||||||
|
OnesAccessor onesAccessor(vertexCount);
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
auto* normalAccessor = GetAccessorForIndex(
|
auto* normalAccessor = GetAccessorForIndex(
|
||||||
@ -237,7 +238,7 @@ namespace
|
|||||||
accessorsForVertex.colorAccessor,
|
accessorsForVertex.colorAccessor,
|
||||||
{JsonAccessorType::VEC3, JsonAccessorType::VEC4},
|
{JsonAccessorType::VEC3, JsonAccessorType::VEC4},
|
||||||
{JsonAccessorComponentType::FLOAT, JsonAccessorComponentType::UNSIGNED_BYTE, JsonAccessorComponentType::UNSIGNED_SHORT}
|
{JsonAccessorComponentType::FLOAT, JsonAccessorComponentType::UNSIGNED_BYTE, JsonAccessorComponentType::UNSIGNED_SHORT}
|
||||||
).value_or(&nullAccessor);
|
).value_or(&onesAccessor);
|
||||||
VerifyAccessorVertexCount("COLOR_0", colorAccessor, vertexCount);
|
VerifyAccessorVertexCount("COLOR_0", colorAccessor, vertexCount);
|
||||||
|
|
||||||
auto* jointsAccessor = GetAccessorForIndex(
|
auto* jointsAccessor = GetAccessorForIndex(
|
||||||
|
@ -81,6 +81,85 @@ size_t NullAccessor::GetCount() const
|
|||||||
return m_count;
|
return m_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OnesAccessor::OnesAccessor(const size_t count)
|
||||||
|
: m_count(count)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OnesAccessor::GetFloatVec2(const size_t index, float (&out)[2]) const
|
||||||
|
{
|
||||||
|
if (index >= m_count)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
out[0] = 1.0f;
|
||||||
|
out[1] = 1.0f;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OnesAccessor::GetFloatVec3(const size_t index, float (&out)[3]) const
|
||||||
|
{
|
||||||
|
if (index >= m_count)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
out[0] = 1.0f;
|
||||||
|
out[1] = 1.0f;
|
||||||
|
out[2] = 1.0f;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OnesAccessor::GetFloatVec4(const size_t index, float (&out)[4]) const
|
||||||
|
{
|
||||||
|
if (index >= m_count)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
out[0] = 1.0f;
|
||||||
|
out[1] = 1.0f;
|
||||||
|
out[2] = 1.0f;
|
||||||
|
out[3] = 1.0f;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OnesAccessor::GetUnsigned(const size_t index, unsigned& out) const
|
||||||
|
{
|
||||||
|
if (index >= m_count)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
out = 0xFFFFFFFFu;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OnesAccessor::GetUnsignedVec4(const size_t index, unsigned (&out)[4]) const
|
||||||
|
{
|
||||||
|
if (index >= m_count)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
out[0] = 0xFFFFFFFFu;
|
||||||
|
out[1] = 0xFFFFFFFFu;
|
||||||
|
out[2] = 0xFFFFFFFFu;
|
||||||
|
out[3] = 0xFFFFFFFFu;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::optional<JsonAccessorComponentType> OnesAccessor::GetComponentType() const
|
||||||
|
{
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::optional<JsonAccessorType> OnesAccessor::GetType() const
|
||||||
|
{
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t OnesAccessor::GetCount() const
|
||||||
|
{
|
||||||
|
return m_count;
|
||||||
|
}
|
||||||
|
|
||||||
FloatAccessor::FloatAccessor(const BufferView* bufferView, const JsonAccessorType type, size_t byteOffset, const size_t count)
|
FloatAccessor::FloatAccessor(const BufferView* bufferView, const JsonAccessorType type, size_t byteOffset, const size_t count)
|
||||||
: m_buffer_view(bufferView),
|
: m_buffer_view(bufferView),
|
||||||
m_type(type),
|
m_type(type),
|
||||||
|
@ -46,6 +46,25 @@ namespace gltf
|
|||||||
size_t m_count;
|
size_t m_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class OnesAccessor final : public Accessor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit OnesAccessor(size_t count);
|
||||||
|
|
||||||
|
[[nodiscard]] std::optional<JsonAccessorType> GetType() const override;
|
||||||
|
[[nodiscard]] std::optional<JsonAccessorComponentType> GetComponentType() const override;
|
||||||
|
[[nodiscard]] size_t GetCount() const override;
|
||||||
|
|
||||||
|
[[nodiscard]] bool GetFloatVec2(size_t index, float (&out)[2]) const override;
|
||||||
|
[[nodiscard]] bool GetFloatVec3(size_t index, float (&out)[3]) const override;
|
||||||
|
[[nodiscard]] bool GetFloatVec4(size_t index, float (&out)[4]) const override;
|
||||||
|
[[nodiscard]] bool GetUnsigned(size_t index, unsigned& out) const override;
|
||||||
|
[[nodiscard]] bool GetUnsignedVec4(size_t index, unsigned (&out)[4]) const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
size_t m_count;
|
||||||
|
};
|
||||||
|
|
||||||
class FloatAccessor final : public Accessor
|
class FloatAccessor final : public Accessor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user