mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 00:02:55 +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();
|
||||
NullAccessor nullAccessor(vertexCount);
|
||||
OnesAccessor onesAccessor(vertexCount);
|
||||
|
||||
// clang-format off
|
||||
auto* normalAccessor = GetAccessorForIndex(
|
||||
@ -237,7 +238,7 @@ namespace
|
||||
accessorsForVertex.colorAccessor,
|
||||
{JsonAccessorType::VEC3, JsonAccessorType::VEC4},
|
||||
{JsonAccessorComponentType::FLOAT, JsonAccessorComponentType::UNSIGNED_BYTE, JsonAccessorComponentType::UNSIGNED_SHORT}
|
||||
).value_or(&nullAccessor);
|
||||
).value_or(&onesAccessor);
|
||||
VerifyAccessorVertexCount("COLOR_0", colorAccessor, vertexCount);
|
||||
|
||||
auto* jointsAccessor = GetAccessorForIndex(
|
||||
|
@ -81,6 +81,85 @@ size_t NullAccessor::GetCount() const
|
||||
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)
|
||||
: m_buffer_view(bufferView),
|
||||
m_type(type),
|
||||
|
@ -46,6 +46,25 @@ namespace gltf
|
||||
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
|
||||
{
|
||||
public:
|
||||
|
Loading…
x
Reference in New Issue
Block a user