Hoops API参考: 3D Graphics System的Set_Color()函数

void Set_Color(const char* color_spec)

渲染一个段的内容时改变使用的颜色。还可以用于选择要在高亮模式中使用的曲面特性,以及用于特殊纹理贴图效果。

具体细节

Set_Color()的通用目标是使用这个颜色进行绘制。你可以之只给颜色命令,也可以具体描述颜色应用的具体几何体类型。在HOOPS高亮模式,Set_Color()允许你描述照明表面的反射性reflection、透射性transmission(材质属性)。此外,你可以制定像颜色一样使用的图片和纹理的名称。
color_spec的颜色部分以描述的形式出现,例如 “pinkish sunset-orange” or “pale gray” or “R=0.8 G=0 B=0.1”.。

HOOPS支持的颜色列表:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

定义组合规则的形式语法

不区分大小写

color                ->        qual-list hsimple        
qual-list            ->        qual-list 1st-degree     
                    ->        qual-list 2nd-degree     
                    ->        optspace                 
1st-degree           ->        1st-name                 
                    ->        primitive `ish'          
2nd-degree           ->        2nd-name                 
                    ->        primitive `er'           
hsimple              ->        simple `-' simple        
                    ->        simple                   
simple               ->        defined-name             
                    ->        primitive                
primitive            ->        lparen `R' val `G' val    `B' val rparen
                    ->        lparen `H' val `S' val /I>`V' val rparen
                    ->        lparen `H' val `L' val `S' val rparen
                    ->        lparen color rparen      
val                  ->        optspace `=' optspace float-num optspace 
1st-name             ->        defined-name             
2nd-name             ->        defined-name             
defined-name         ->        optspace trim-name optspace 
trim-name            ->        letter trim-name         
                    ->        letter                   
float-num            ->        optpm digits optfrac optexp
optpm                ->        `+'                      
                    ->        `-'                      
                    ->        <nothing>                
digits               ->        `0..9' optdigits         
optdigits           ->        `0..9' optdigits         
                    ->        <nothing>                
optfrac              ->        `.' optdigits            
                    ->        <nothing>                
optexp               ->        `E' optpm digits         
                    ->        <nothing>                
letter               ->        `A..Za..z0..9'           
                    ->        `'(2)                    
                    ->        `#'                      
                    ->        `-'                      
                    ->        `$'                      
                    ->        `_'                      
                    ->        `%'                      
                    ->        `/'                      
lparen              ->        `(' optspace             
rparen              ->        `)' optspace             
optspace             ->        `' optspace              
                    ->        `<tab>' optspace         
                    ->        <nothing>                

如何定义颜色

如果只在color_spec中命名一种颜色,则所有不同类型的几何体都将使用该颜色(窗口颜色和对比度颜色不受影响)。

如果希望更具体,color_spec也可以是一个字符串,由要着色的几何体类型、等号和要使用的颜色组成。例如:“lines=red”。单词周围可以插入空格。通过嵌入逗号,可以在给定的color_spec中创建多个规范,如下例所示:

Set_Color("lines = red, edges = green")

相同的颜色可以折叠在一起:

Set_Color("lines=edges=green, faces=markers=blue")

可以在以下各项上设置颜色:

ambient light

faces

多边形、壳、网格、椭圆和圆(曲面)的内部填充区域。与其他类型的几何体不同,面除了主颜色之外还具有其他特性。

lines

与“polylines”同义。

polylines

适用于直线、多段线和墨迹线。

markers

适用于标记符号

特殊表面颜色选项

通常只需要一种颜色来描述几何体(例如,“lines=red”),但是,面可以有更复杂的定义。这些更复杂的设置可用于启用以下功能:

  • Transparency(a.k.a transmission)

Transparency(a.k.a transmission)

支持透明度的设备通常要求延迟透明对象,以便可以按深度对其进行排序。因此,使曲面透明通常会减慢渲染过程。Set_Rendering_options()中提供了几个不同的透明度隐藏曲面移除算法选项(查找“透明度”子选项)。这些不同的策略控制透明几何体的速度和质量之间的权衡。

Set_Color("Faces=(transmission=black)")

描述了完全不透明的表面

 Set_Color("faces=(transmission=white)")

描述了一种完全透明的材料

Set_Color("faces=(transmission=green)")

描述了对红色和蓝色不透明但对绿色透明的曲面。

非灰度值(即r=g=b)的传输设置往往与现代图形硬件的映射较差,因此可能会产生比正常性能更大的性能损失。
表面透明度的精度取决于硬件和所使用的隐藏表面移除类型。一些显示设备具有加速绘制透明表面的硬件,但只允许一定程度的透明度而不是颜色(在这种情况下,使用颜色的强度,但忽略色调和饱和度)。
并非所有设备或隐藏表面算法都能够支持传输。否则,透明几何体将呈现为不透明。

在特殊情况下,您可能希望以数字方式(有关详细信息,请参阅set_Color_By_Value())或间接方式(请参阅set_Clor_By_Index())设置颜色。如果您的程序正在计算颜色参数,则“按值”设置颜色可能是合适的。“按索引”设置颜色允许间接控制颜色使用,并与HOOPS“图像”约定兼容。将颜色作为参数的特殊面部颜色(即除光泽外的所有颜色)也可以通过显式浮点值的值设置。

 Set_Color("faces = (transmission = (r=0.2 g=0.2 b=0.2))")

如果您正在从HOOPS多边形、壳或网格构建三维图形,并且不使用灯光,则需要确保“边”可见,否则您将只看到图形的轮廓。要区分边,您需要绘制有图案的面,或者选择与“面”颜色不同的“边”颜色。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haimianjie2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值