下述代码讲述如何用代码进行贴图
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] |
transparency | 透明度(取值范围0-1) | float |
specularColor | 高光颜色RGB(取值范围0-1) | [float,float,float] |
specularFactor | 高光系数(取值范围0-1) | Float |
glowColor | 自发光颜色RGB(取值范围0-1) | [float,float,float] |
glowFactor | 自发光系数(取值范围0-100 | int |
ambientFactor | 环境光(取值范围0-1) | float |
需要注意,在uvScale(贴图缩放)中,以uvScale=[m,n]为例。当mapUnit(贴图模式)为3(按尺寸贴图)时,表示将原有图片缩放为(m1000mm)×(n1000mm);当mapUnit为0(按比例贴图)时,[m,n]表示将原图片缩放为m×n倍
注意,创建材质的过程放在了输出模型的部分,也就是模型代码结构中的第三部分,请不要在建模部分创建材质。