Skip to content
目录

材质系统

几何描述了物体的形状,材质描述物体的外观(颜色、光照)。ARS提供了多种材质,可以满足多种情况下的使用。

Mateiarls

TIP

材质实例过多会导致程序效率降低。建议尽可能重用材质。比如相同颜色的模型,使用相同的材质实例。

1 简单材质

基本材质可以用来显示点、线、或者不受光照影响的面。

csharp
var material = BasicMaterial.Create("red");
material.SetColor(new Vector3(1,0,0));

2 面材质

Phong光照模型计算量比较简单,是比较传统的光照模型。 以下是根据经验值可以设置的参数来模拟不同的材质。

NameAmbientDiffuseSpecularShininess
emerald0.0215 0.1745 0.02150.07568 0.61424 0.075680.633 0.727811 0.6330.6
jade0.135 0.2225 0.15750.54 0.89 0.630.316228 0.316228 0.3162280.1
obsidian0.05375 0.05 0.066250.18275 0.17 0.225250.332741 0.328634 0.3464350.3
pearl0.25 0.20725 0.207251 0.829 0.8290.296648 0.296648 0.2966480.088
ruby0.1745 0.01175 0.011750.61424 0.04136 0.041360.727811 0.626959 0.6269590.6
turquoise0.1 0.18725 0.17450.396 0.74151 0.691020.297254 0.30829 0.3066780.1
brass0.329412 0.223529 0.0274510.780392 0.568627 0.0.992157 0.941176 0.8078430.21794872
bronze0.2125 0.1275 0.0540.714 0.4284 0.181440.393548 0.271906 0.1667210.2
chrome0.25 0.25 0.250.4 0.4 0.40.774597 0.774597 0.7745970.6
copper0.19125 0.0735 0.02250.7038 0.27048 0.08280.256777 0.137622 0.0860140.1
gold0.24725 0.1995 0.07450.75164 0.60648 0.226480.628281 0.555802 0.3660650.4
silver0.19225 0.19225 0.192250.50754 0.50754 0.507540.508273 0.508273 0.5082730.4
black plastic0.0 0.0 0.00.01 0.01 0.010.50 0.50 0.50.25
cyan plastic0.0 0.1 0.060.0 0.50980392 0.509803920.50196078 0.50196078 0.50196078.25
green plastic0.0 0.0 0.00.1 0.35 0.10.45 0.55 0.45.25
red plastic0.0 0.0 0.00.5 0.0 0.00.7 0.6 0.6.25
white plastic0.0 0.0 0.00.55 0.55 0.550.70 0.70 0.70.25
yellow plastic0.0 0.0 0.00.5 0.5 0.00.60 0.60 0.50.25
black rubber0.02 0.02 0.020.01 0.01 0.010.4 0.4 0.4.078125
cyan rubber0.0 0.05 0.050.4 0.5 0.50.04 0.7 0.7.078125
green rubber0.0 0.05 0.00.4 0.5 0.40.04 0.7 0.04.078125
red rubber0.05 0.0 0.00.5 0.4 0.40.7 0.04 0.04.078125
white rubber0.05 0.05 0.050.5 0.5 0.50.7 0.7 0.7.078125
yellow rubber0.05 0.05 0.00.5 0.5 0.40.7 0.7 0.04.078125

Standard采用基于物理光照(PBR)的渲染模型,是目前流行的材质。可以通过Roughness参数来设置物体表面的粗糙度,使用metalness来设置金属度。

注:

  • 可以直接使用ColorTable得到常用的颜色定义

3 线材质

基本曲线颜色、线宽使用BasicMaterial就可以描述。若需要点画线则需要使用LineDashedMaterial来描述。

4 点材质

  • PointsMaterial PointsMaterial用来描述点的样式,点的形状可以使用图片来描述
csharp
var material = PointsMaterial.Create("points-material");
            material.SetSizeAttenuation(false);
            material.SetPointSize(15.0f);
            material.SetColorMap(ImageTexture2D.Create(GetResourcePath("textures/snowflake7_alpha.png")));
            material.SetTransparent(true);

查看完整代码PointsMaterial

5 特殊材质

  • FontMaterial
csharp
var fontMaterial = FontMaterial.Create("font-texture-1");
            fontMaterial.SetFaceSide(EnumFaceSide.DoubleSide);
            fontMaterial.SetColor(new Vector3(1, 1, 0));
            fontMaterial.SetBackground(new Vector3(0, 0, 1));
            fontMaterial.SetBillboard(true);

            var dim = fontMaterial.SetText("Hello 世界!", 128);
            var shape = GeometryBuilder.CreatePlane(dim.x * 0.1f, dim.y*0.1f);

            var node = new PrimitiveSceneNode(shape, fontMaterial);
            node.SetPickable(false);

            render.ShowSceneNode(node);

FontMaterial

6 自定义材质

所有的材质都是基于Shader机制实现,用户可以实现自己的光照模型和特效。

查看实例代码

特效

7 小结

ARS材质系统封装了复杂的Shader实现


上海图无形科技有限公司旗下产品
Copyright © 2013-2023 AnyCAD