ObjectLocalBounds
- LocalBoundsMinimal
- GetPrimitiveData(Parameters).LocalObjectBoundsMin.xyz
- LocalBoundsMax
- GetPrimitiveData(Parameters).LocalObjectBoundsMax.xyz
该表达式输出LocalBoundingBox的Min、Max、Size,这个Size就是Max-Min,也就是所谓的Extents的2倍。注意这个BoundingBox是Local系的,可以简单理解为PrimitiveComponent系。参考
Bounding Box
- TransformPosition
- 注意该节点Details里选择的参数,是将PositionWS(Excluding Materials Shader Offset)从WS变换到InstanceSpace,可以简单理解为WS->CS。Excluding Materials Shader Offset这个选项可能是忽略GeometryShader对原始Mesh造成的拉伸,而取Mesh顶点的原始值。
- (PositionCS-LocalBoundingBox.Min) / LocalBoundingBox.Size将PositionCS进行了0-1化
总结一下:该节点将PositionWS变换为PositionCS后进行了LocalBoundingBox内的0-1化
ConstantBiasScale
- Output = (Input + Bias) * Scale
- 比如:将UV输入该节点,则<Bias, Scale>=<-0.5, 1>表示将UV的[0,1]变换到[-0.5,0.5]
关键词:线性映射、线性变换
AppendVector
- 两个输入A和B,将B作为新的维度或分量与A合成在一起。如AppendVector(UV, W)输出UVW
关键词:数据升维
HLSL里坐标变换
- OtherVector = normalize(mul(SomeVector, GetPrimitiveData(Parameters.PrimitiveId).WorldToLocal));
这个示例是将world系的SomeVector转到PrimitiveComponent系