载入中...
搜索中...
未找到
Binding.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Result.h"
5
6#include <cstddef>
7#include <cstdint>
8#include <vector>
9
10#include <glm/vec3.hpp>
11
12namespace eve::graphics::hair {
13
23 const float *posXYZ = nullptr;
24 int vertexCount = 0;
25 const uint32_t *indices = nullptr;
26 int indexCount = 0;
27};
28
37enum class BindingDeformMode : uint8_t { Rigid = 0, Offset = 1 };
38
43struct RootAttach {
44 uint32_t triangleIndex = 0;
46 glm::vec3 barycentric{1.f, 0.f, 0.f};
48 glm::vec3 restRoot{0.f};
50 glm::vec3 restNormal{0.f, 1.f, 0.f};
51};
52
64public:
69 [[nodiscard]] Result<void> build(const StrandsDatas &strands, const SkinTriMesh &restMesh);
70
71 void clear();
72
74 [[nodiscard]] size_t rootCount() const { return roots_.size(); }
76 [[nodiscard]] const RootAttach *rootAt(size_t index) const;
77
82 [[nodiscard]] Result<StrandsDatas> deform(const StrandsDatas &restStrands,
83 const SkinTriMesh &deformedMesh,
84 BindingDeformMode mode = BindingDeformMode::Rigid) const;
85
86private:
87 std::vector<RootAttach> roots_;
88};
89
90} // namespace eve::graphics::hair
int strands
#define EVENGINE_API_BACKENDS
Definition Export.h:108
Move-only, checked operation results for the common layer.
uint32_t index
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Root-to-skin binding table (UE UGroomBindingAsset analogue, CPU-only).
Definition Binding.h:63
size_t rootCount() const
Root count.
Definition Binding.h:74
CPU-authoritative strand buffer (UE FHairStrandsDatas analogue).
Procedural hair/fur card meshes + material/LOD helpers (no strand simulation).
Definition Graphics.h:58
BindingDeformMode
How bound strands follow a deformed skin triangle.
Definition Binding.h:37
One strand root projected onto a skin triangle (UE binding entry analogue). @ownership Owned by Groom...
Definition Binding.h:43
glm::vec3 restNormal
Rest triangle geometric normal (unit).
Definition Binding.h:50
glm::vec3 barycentric
Barycentric weights (u,v,w) with u+v+w ≈ 1.
Definition Binding.h:46
glm::vec3 restRoot
Strand root position at bind time (rest pose).
Definition Binding.h:48
Borrowed triangle mesh used as a scalp / skin bind target.
Definition Binding.h:22