Hoops API参考: 3D Graphics System的Set_Color()函数
创始人
2024-03-18 19:54:52
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                ->        `+'                      ->        `-'                      ->                        
digits               ->        `0..9' optdigits         
optdigits           ->        `0..9' optdigits         ->                        
optfrac              ->        `.' optdigits            ->                        
optexp               ->        `E' optpm digits         ->                        
letter               ->        `A..Za..z0..9'           ->        `'(2)                    ->        `#'                      ->        `-'                      ->        `$'                      ->        `_'                      ->        `%'                      ->        `/'                      
lparen              ->        `(' optspace             
rparen              ->        `)' optspace             
optspace             ->        `' optspace              ->        `' optspace         ->                        

如何定义颜色

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

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...