arkavo-org / arkavo-org/VRMMetalKit
Add runtime material property overrides for enhanced rendering
- Dominant language
- Swift
- Stars
- 6
- Forks
- 2
- Avg merge
- 18h 51m
- Merged PRs (30d)
- 26
Description
## Description
Currently, MToon material properties are loaded from the VRM file and cannot be modified at runtime. This limits the ability to:
- Enhance skin shading for better appearance
- Add specular highlights to hair
- Adjust shadow softness for different lighting conditions
## Proposed Solution
Add material override system:
```swift
public enum MaterialType {
case skin, hair, eyes, clothing, other
}
public struct MaterialOverride {
var shadingToonyFactor: Float? // 0.0 = hard cel, 1.0 = soft gradient
var shadeMultiply: SIMD3? // Darken shadow regions
var specularIntensity: Float? // Add specular highlights
var rimLightIntensity: Float? // Edge highlighting
}
public func applyMaterialOverride(type: MaterialType, override: MaterialOverride)
public func detectMaterialType(for nodeName: String) -> MaterialType
```
## Use Case
- VTuber apps need to optimize appearance across different models
- Skin shader preset: softer shadows, subtle SSS emulation
- Hair shader preset: specular highlights, reduced banding
- Eyes shader preset: increased emission, sharper reflections
## Benefits
- Better visual quality without re-exporting VRM files
- Per-material-type presets for consistent look
- Optional - doesn't affect existing materials
## Priority
**MEDIUM** - Advanced customization for professional applications
Contributor guide
Research direction
No files or tests are named. Start by locating the MToon material-loading and rendering entry points, then determine how the proposed MaterialType and MaterialOverride APIs should integrate with them. Done means optional runtime, per-material-type overrides for the listed properties without changing existing materials.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- swift
- Domain
- computer-graphics
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100