载入中...
搜索中...
未找到
GroomInstance.cpp
浏览该文件的文档.
65StrandsDatas GroomInstance::decimatedStrands(const StrandsDatas &src, float curveFraction) const {
254Result<void> GroomInstance::enableGuideSimulation(const GuideSimParams ¶ms, float guideFraction,
Stable, structured diagnostics shared by engine modules.
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Definition Graphics.h:125
virtual Texture * newTexture(int width, int height, const uint8_t *rgba, bool repeatU=false, bool repeatV=false)=0
Creates a texture. @ownership Caller deletes unless documented otherwise.
virtual void drawMeshShader(Mesh *mesh, const glm::mat4 &model, Texture *texture, const Color &tint, Shader *shader)=0
Draw mesh with an explicit Mesh3D Shader (nullptr = default PBR pipeline).
virtual Mesh * newMeshFromArrays(const float *posXYZ, const float *nrmXYZ, const float *uvST, int vertexCount, const uint32_t *indices, int indexCount)=0
Upload a triangle mesh from packed CPU arrays. Owned by Graphics. posXYZ required (vertexCount*3)....
void sendFloat(const std::string &name, float x)
Definition Shader.cpp:95
GPU texture created via Graphics::newTexture. Owns GPU resources through an opaque backend handle.
Definition Texture.h:18
Shared CPU groom container (UE UGroomAsset analogue).
Definition GroomAsset.h:52
const GroomGroup * groupAt(size_t index) const
Definition GroomAsset.cpp:40
Result< void > validate() const
Validate every group strands buffer and LOD table.
Definition GroomAsset.cpp:54
void setClusterCullingEnabled(bool enabled)
Enable/disable CPU cluster frustum filtering before mesh bake. When enabled, call updateVisibility wi...
Definition GroomInstance.cpp:187
Result< void > update(float dt)
Advance guide simulation by dt and rebuild the GPU mesh. No-op success when simulation is disabled.
Definition GroomInstance.cpp:287
Result< void > bakeProceduralPlane(float sizeX, float sizeZ, const ProceduralParams ¶ms={})
Bake a procedural plane groom into a single default group.
Definition GroomInstance.cpp:156
Result< void > bakeProceduralMesh(const float *posXYZ, const float *nrmXYZ, int vertexCount, const uint32_t *indices, int indexCount, const ProceduralParams ¶ms={})
Bake procedural strands on an indexed triangle mesh.
Definition GroomInstance.cpp:163
void setSelfShadow(float strength, float bias, float rootAo)
Cheap analytical self-shadow (fiber wrap + along-strand root AO).
Definition GroomInstance.cpp:204
Result< void > updateVisibility(const float *viewProj16)
Frustum-cull every group's cluster grid and rebuild GPU mesh.
Definition GroomInstance.cpp:376
Result< void > disableGuideSimulation()
Disable guide simulation and restore rest strands on next rebuild.
Definition GroomInstance.cpp:270
bool isGuideSimulationEnabled() const
Definition GroomInstance.cpp:276
Result< void > setAsset(const GroomAsset &asset)
Replace runtime strands from a shared asset (deep copy of groups). @ownership Asset remains owned by ...
Definition GroomInstance.cpp:140
bool isClusterCullingEnabled() const
True when cluster culling enabled.
Definition GroomInstance.cpp:189
Result< void > rebuild()
Rebuild GPU mesh from all groups (LOD + optional visibility).
Definition GroomInstance.cpp:397
const GuideSimParams & getGuideSimParams() const
Returns the guide sim params.
Definition GroomInstance.cpp:285
void setGuideSimParams(const GuideSimParams ¶ms)
Definition GroomInstance.cpp:278
void setMarschnerLobes(float r, float tt, float trt)
Marschner-approximate lobe weights (R / TT / TRT) applied to the hair shader. Defaults: 1 / 0....
Definition GroomInstance.cpp:191
int getActiveRepresentation() const
Returns the active representation.
Definition GroomInstance.cpp:319
float getSelfShadowStrength() const
Returns the self shadow strength.
Definition GroomInstance.cpp:211
void setScreenSize(float screenSize)
Screen-size hint in [0,1] used when forced LOD is disabled.
Definition GroomInstance.cpp:175
void setForcedLod(int lod)
Force LOD index; -1 restores automatic selection.
Definition GroomInstance.cpp:171
Result< void > enableGuideSimulation(const GuideSimParams ¶ms={}, float guideFraction=0.15f, InterpolationMode mode=InterpolationMode::Offset)
Enable lightweight guide XPBD/Verlet for every group.
Definition GroomInstance.cpp:254
CPU-authoritative strand buffer (UE FHairStrandsDatas analogue).
Definition StrandsDatas.h:44
Procedural hair/fur card meshes + material/LOD helpers (no strand simulation).
Definition Graphics.h:58
CardMeshData buildCardsAlongPolyline(const float *pointsXYZ, int pointCount, float width)
Build one card per polyline segment, facing a camera-facing side approximated by world up.
Definition HairCards.cpp:75
InterpolationMode
How render strands follow deformed guides (UE interpolation analogue).
Definition Guides.h:19
Result< RibbonMesh > buildRibbons(const StrandsDatas &strands, const RibbonParams ¶ms)
Expand validated strands into stable (non-view-facing) ribbons.
Definition RibbonBuilder.cpp:21
Result< StrandsDatas > generateOnPlane(float sizeX, float sizeZ, const ProceduralParams ¶ms)
Grow strands on a Y-up XZ plane centered at the origin.
Definition Procedural.cpp:204
Result< StrandsDatas > extractGuides(const StrandsDatas &strands, float guideFraction)
Pick a deterministic subset of curves as guides (density thinning).
Definition Guides.cpp:56
Result< StrandsDatas > filterStrandsByCurves(const StrandsDatas &src, const std::vector< uint32_t > &curveIndices)
Copy a subset of curves into a new StrandsDatas (preserves point order).
Definition ClusterGrid.cpp:188
Result< StrandsDatas > interpolateStrands(const StrandsDatas &strandsRest, const StrandsDatas &guidesRest, const StrandsDatas &guidesDeformed, const std::vector< StrandGuideWeights > &weights, InterpolationMode mode)
Drive rest render strands with deformed guides using precomputed weights. @ownership Returned datas u...
Definition Guides.cpp:154
Result< StrandsDatas > generateOnMesh(const float *posXYZ, const float *nrmXYZ, int vertexCount, const uint32_t *indices, int indexCount, const ProceduralParams ¶ms)
Grow strands from area-weighted samples on an indexed triangle mesh.
Definition Procedural.cpp:104
Mesh * uploadCardMesh(Graphics *gfx, const CardMeshData &data)
Upload card arrays as a Graphics-owned Mesh.
Definition HairCards.cpp:123
Result< std::vector< StrandGuideWeights > > buildGuideWeights(const StrandsDatas &strands, const StrandsDatas &guides, int maxInfluences, InterpolationMode mode)
Build k-nearest guide weights for every render strand (by root distance).
Definition Guides.cpp:103
void appendRibbonMesh(RibbonMesh &dst, const RibbonMesh &src)
Append src into dst, rebasing triangle indices by dst vertex count. @ownership Both meshes remain cal...
Definition RibbonBuilder.cpp:101
void appendCardMesh(CardMeshData &dst, const CardMeshData &src)
Append src into dst (vertex/index rebase).
Definition HairCards.cpp:115
size_t selectLodIndex(const std::vector< GroomLod > &lods, float screenSize)
Pick the LOD index for a given screen size (largest screenSize ≤ query).
Definition GroomAsset.cpp:75
Shader * createShader(Graphics *gfx)
Create the default hair shader (alpha-blended, anisotropic specular). Owned by Graphics.
Definition HairShader.cpp:67
eve::Color Color
RGBA color used by every graphics draw call. Lives inside eve::graphics so including a graphics heade...
Definition Color.h:13
@ InvalidArgument
@ Unsupported
@ Failed
CPU-side interleaved mesh arrays for upload via Graphics::newMeshFromArrays.
Definition HairCards.h:27
One groom group (UE hair group analogue: bangs / scalp / beard …). @ownership Owned by GroomAsset.
Definition GroomAsset.h:31
Parameters for CPU guide-strand dynamics (UE groom sim lite analogue).
Definition Simulation.h:21
Parameters for growing strands on a triangle mesh (scalp / body).
Definition Procedural.h:16
Triangle-list ribbon mesh expanded from strand curves.
Definition RibbonBuilder.h:19
std::vector< uint32_t > indices
Definition RibbonBuilder.h:23
glm::vec3 sideHint
World-space side hint used to extrude the ribbon (normalized internally).
Definition RibbonBuilder.h:34