Sketchup 程序自动化(六)颜色、材质贴图

914 阅读1分钟

在Sketchup对导入的模型进行贴图或者填充颜色,然后通过V-ray、Octan进行渲染来出效果图,在 Sketchup 开发中,我们也可以试想下,这些贴图的工作能否交与计算机进行实现,根据获得的参数对生成的模型进行相应的贴图。废话不多说,直接进入代码:

# Sketchup 常用类别的使用
model = Sketchup.active_model
entities = model.entities
sel = model.selection
layers_arr = model.layers
lists = model.definitions
mats = model.materials

face = entities.add_face [[0,0,0],[100,0,0],[100,100,0],[0,100,0]]
# 对面进行翻转 Z为0的面 朝向是向下的
face = face.reverse!

# 材质
# 新建一个材料
new_mat = mats.add "骚红色"

# 颜色
# RGB 值
new_mat.color = [255,0,0]
face.material = new_mat

# 获取当前材料
puts face.material.name

bluee = Sketchup::Color.new 0,0,100
redd = Sketchup::Color.new 100,0,0

# 0.5为混色颜色的比重
mixColor = bluee.blend redd, 0.0

puts mixColor
face2 = entities.add_face [[0,0,100],[100,0,100],[100,100,100],[0,100,100]]
mix_mat = mats.add "混合色"
face2.material = mix_mat


# 贴图
face3 = entities.add_face [[0,0,200],[100,0,200],[100,100,200],[0,100,200]]
path = Sketchup.find_support_file "material/1.png","Plugins"

texturePic = mats.add "贴图"
texturePic.texture = path
# 默认是贴图平铺
face3.material = texturePic

# 获取材质的平均颜色值
puts texturePic.texture.average_color

# texture writer 用于将材质文件写入文件夹
tw = Sketchup.create_texture_writer
tw.load face3,true # 表示要处理正面
path2 = Sketchup.find_support_file "Test","Plugins"
# 注意,此时 Test 这个文件夹应该是存在于 Plugins 中的
tw.write_all path2,true # 这个时候该路径下就会有 1.png 这张图

运行结果: