目前,参数化组件有两种贴图方式。第一种方式是使用BIMBase自带的素材库功能,对已经布置在工程文件中的模型进行选中后贴图(也可修改模型颜色)。第二种方式则是在建模过程中,直接对某个几何体进行贴图。
2.7.1 使用材质库进行贴图
我们点开【编辑】栏,找到最右侧的【材质库】,点击【材质库】,可以看到如下图所示的材质编辑器。


如果勾选了下方的“贴图设置”中的“纹理贴图”,那么此时常规参数中的颜色、透明度、高光和自发光设置将自动置灰,并且需要点击“贴图设置”中的“设置”来选择图片,同时可以选择不同的“贴图映射方式”。





2.7.2 Python建模时贴图
这里我们需要使用到贴图函数,我们先来看一下例子(Eg.2.7.2-1)
from pyp3d import *
# 定义参数化模型
class 长方体(Component):
# 定义各个参数及其默认值
def __init__(self):
Component.__init__(self)
self['长'] = Attr(1000, obvious = True, combo = [500,1000,2000,3000,4000])
self['宽'] = Attr(300.0, obvious = True)
self['高'] = Attr(500, obvious = True)
self['长方体'] = Attr(None, show = True)
self.replace()
@export
# 模型造型
def replace(self):
# 设置变量,同时调用参数(简化书写过程)
L = self['长']
W = self['宽']
H = self['高']
# 绘制模型
TestCube = scale(L,W,H) * Cube()
self['长方体'] = TestCube
self['长方体'].material('M8')
# 输出模型
if __name__ == "__main__":
mt3 = create_material('M8', mapMode = 5, mapUnit = 0, uvScale = [1,1], wRotation = 0)
mt3.mapFile = R'C:\Users\PKPM\Pictures\BIMBase图标.png'
FinalGeometry = 长方体()
place(FinalGeometry)
可以看到,我们对要某个几何体进行贴图时,需要加上material
这个成员方法,同时,括弧内的字符串表示这个贴图的名称(name),而这个贴图的名称则是在输出模型阶段进行定义的。而这个贴图的变量名是mt3,需要用到create_material
这个函数,这个函数的具体用法,我们来一起看一下。
create_material函数
create_material
函数的含义是创建一个材质,可以是图片(贴图)也可以是颜色,在创建材质时,就可以填入各种默认参数。create_material
函数参数与说明表
参数 | 含义 | 参数格式 |
---|---|---|
name | 材质名称(必填) | str |
mapFile | 贴图路径(贴图时必填) | str |
mapUnit | 贴图单位3 按尺寸贴图0 按比例贴图 | 索引 |
mapMode | 贴图模式0 参数几何投影2 平面投影4 立方体投影5 球形投影6 圆柱形投影 | 索引 |
uvScale | 贴图缩放 | [float,float] |
uvOffset | 贴图偏移 | [float,float] |
wRotation | 贴图旋转角度(弧度制) | float |
Color | 颜色 RGB(取值范围为0-1) | [float,float,float]Eg. [0,245/255,1] |
transparency | 透明度(取值范围0-1) | float |
specularColor | 高光颜色RGB(取值范围0-1) | [float,float,float]Eg. [0,245/255,1] |
specularFactor | 高光系数(取值范围0-1) | Float |
glowColor | 自发光颜色RGB(取值范围0-1) | [float,float,float]Eg. [0,245/255,1] |
glowFactor | 自发光系数(取值范围0-100) | int |
ambientFactor | 环境光(取值范围0-1) | float |
需要注意,在uvScale
(贴图缩放)中,以uvScale=[m,n]
为例。当mapUnit
(贴图模式)为3(按尺寸贴图)时,表示将原有图片缩放为(m1000mm)×(n1000mm);当mapUnit
为0(按比例贴图)时,[m,n]表示将原图片缩放为m×n倍
注意,创建材质的过程放在了输出模型的部分,也就是模型代码结构中的第三部分,请不要在建模部分创建材质。(参考例子Eg.2.7.2-1)