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


    void Set_Color(const char* color_spec)
    
    • 1

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

    具体细节

    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         
                        ->                        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    如何定义颜色

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

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

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

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

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

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

    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)")
    
    • 1

    描述了完全不透明的表面

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

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

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

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

    非灰度值(即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))")
    
    • 1

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

  • 相关阅读:
    2022年11月华南师范大学计算机信息管理-专科-计算机信息管理课程实验(一)
    Linux环境中使用C++ JsonCpp库
    JAVAFX学习
    SELinux 介绍
    【数据结构基础_数组】Leetcode 56.合并区间
    vim,emacs,verilog-mode这几个到底是啥关系?
    thinkPhp5返回某些指定字段
    ubuntu 22.04 安装最新版本的 nodejs
    微信小程序渲染层与逻辑层交互原理
    k8s之Helm
  • 原文地址:https://blog.csdn.net/haimianjie2012/article/details/128182086