# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
bl_info = {
"name" : "Auto-Building",
"author" : "Julien Gauthier",
"description" : "Procedurally generated building based on mesh and material assignments.",
"blender" : (3, 5, 0),
"version" : (1, 1, 4),
"location" : "",
"warning" : "",
"doc_url": "https://auto-building.readthedocs.io",
"tracker_url": "",
"category" : "3D View"
}
import bpy
import bpy.utils.previews
import os
import bmesh
addon_keymaps = {}
_icons = None
visual_scripting_editor = {'sna_meancrease': 0.0, }
def property_exists(prop_path, glob, loc):
try:
eval(prop_path, glob, loc)
return True
except:
return False
class SNA_PT_CREASES_1A2B8(bpy.types.Panel):
bl_label = 'Creases'
bl_idname = 'SNA_PT_CREASES_1A2B8'
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_context = ''
bl_category = 'Auto-Building'
bl_order = 2
bl_ui_units_x=0
@classmethod
def poll(cls, context):
return not ((not property_exists("bpy.context.active_object.modifiers['GN_Auto-Building']", globals(), locals())))
def draw_header(self, context):
layout = self.layout
layout.template_icon(icon_value=490, scale=1.0)
def draw(self, context):
layout = self.layout
col_C2513 = layout.column(heading='', align=False)
col_C2513.alert = False
col_C2513.enabled = True
col_C2513.active = True
col_C2513.use_property_split = True
col_C2513.use_property_decorate = False
col_C2513.scale_x = 1.0
col_C2513.scale_y = 1.0
col_C2513.alignment = 'Expand'.upper()
if not True: col_C2513.operator_context = "EXEC_DEFAULT"
col_C2513.prop(bpy.context.view_layer.objects.active.data, 'sna_meancrease', text='Mean Crease', icon_value=0, emboss=True, slider=True)
attr_02265 = '["' + str('Input_48' + '"]')
col_C2513.prop(bpy.context.view_layer.objects.active.modifiers['GN_Auto-Building'], attr_02265, text='Thickness Extrude Multiplier', icon_value=0, emboss=True)
col_C2513.prop_search(bpy.context.view_layer.objects.active.modifiers['GN_Auto-Building'], '["Input_26"]', bpy.data, 'materials', text='Profile extrude material', icon='SHADING_TEXTURE')
class SNA_PT_WALLS_EAF7B(bpy.types.Panel):
bl_label = 'Walls'
bl_idname = 'SNA_PT_WALLS_EAF7B'
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_context = ''
bl_category = 'Auto-Building'
bl_order = 1
bl_ui_units_x=0
@classmethod
def poll(cls, context):
return not ((not property_exists("bpy.context.active_object.modifiers['GN_Auto-Building']", globals(), locals())))
def draw_header(self, context):
layout = self.layout
layout.template_icon(icon_value=444, scale=1.0)
def draw(self, context):
layout = self.layout
col_0A07D = layout.column(heading='', align=True)
col_0A07D.alert = False
col_0A07D.enabled = True
col_0A07D.active = True
col_0A07D.use_property_split = True
col_0A07D.use_property_decorate = False
col_0A07D.scale_x = 1.0
col_0A07D.scale_y = 1.0
col_0A07D.alignment = 'Expand'.upper()
if not True: col_0A07D.operator_context = "EXEC_DEFAULT"
row_83C00 = col_0A07D.row(heading='', align=False)
row_83C00.alert = False
row_83C00.enabled = True
row_83C00.active = True
row_83C00.use_property_split = True
row_83C00.use_property_decorate = False
row_83C00.scale_x = 1.0
row_83C00.scale_y = 1.0
row_83C00.alignment = 'Expand'.upper()
if not True: row_83C00.operator_context = "EXEC_DEFAULT"
row_83C00.template_icon(icon_value=862, scale=1.0)
row_83C00.prop_search(bpy.context.view_layer.objects.active.modifiers['GN_Auto-Building'], '["Input_18"]', bpy.data, 'materials', text='Empty Wall A material', icon='SHADING_TEXTURE')
attr_DDE05 = '["' + str('Input_260' + '"]')
row_83C00.prop(bpy.context.view_layer.objects.active.modifiers['GN_Auto-Building'], attr_DDE05, text='Auto-UV?', icon_value=0, emboss=True)
row_E3A2F = col_0A07D.row(heading='', align=False)
row_E3A2F.alert = False
row_E3A2F.enabled = True
row_E3A2F.active = True
row_E3A2F.use_property_split = True
row_E3A2F.use_property_decorate = False
row_E3A2F.scale_x = 1.0
row_E3A2F.scale_y = 1.0
row_E3A2F.alignment = 'Expand'.upper()
if not True: row_E3A2F.operator_context = "EXEC_DEFAULT"
row_E3A2F.template_icon(icon_value=863, scale=1.0)
row_E3A2F.prop_search(bpy.context.view_layer.objects.active.modifiers['GN_Auto-Building'], '["Input_17"]', bpy.data, 'materials', text='Empty Wall B material', icon='SHADING_TEXTURE')
attr_3D375 = '["' + str('Input_261' + '"]')
row_E3A2F.prop(bpy.context.view_layer.objects.active.modifiers['GN_Auto-Building'], attr_3D375, text='Auto-UV?', icon_value=0, emboss=True)
class SNA_PT_SETUP_6877F(bpy.types.Panel):
bl_label = 'Setup'
bl_idname = 'SNA_PT_SETUP_6877F'
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_context = ''
bl_category = 'Auto-Building'
bl_order = 0
bl_ui_units_x=0
@classmethod
def poll(cls, context):
return not (False)
def draw_header(self, context):
layout = self.layout
layout.template_icon(icon_value=94, scale=1.0)
def draw(self, context):
layout = self.layout
col_4AC6E = layout.column(heading='', align=False)
col_4AC6E.alert = False
col_4AC6E.enabled = True
col_4AC6E.active = True
col_4AC6E.use_property_split = False
col_4AC6E.use_property_decorate = False
col_4AC6E.scale_x = 1.0
col_4AC6E.scale_y = 1.0
col_4AC6E.alignment = 'Expand'.upper()
if not True: col_4AC6E.operator_context = "EXEC_DEFAULT"
row_53F3F = col_4AC6E.row(heading='', align=False)
row_53F3F.alert = False
row_53F3F.enabled = True
row_53F3F.active = True
row_53F3F.use_property_split = False
row_53F3F.use_property_decorate = False
row_53F3F.scale_x = 3.30517578125
row_53F3F.scale_y = 1.90777587890625
row_53F3F.alignment = 'Expand'.upper()
if not True: row_53F3F.operator_context = "EXEC_DEFAULT"
op = row_53F3F.operator('sna.importautobuildingstart_accb2', text='Starting Object', icon_value=287, emboss=True, depress=False)
op = row_53F3F.operator('sna.importautobuildingtemplate_f148b', text='Example Objects', icon_value=673, emboss=True, depress=False)
op = row_53F3F.operator('sna.importautobase_715b4', text='Auto-Base', icon_value=204, emboss=True, depress=False)
col_4AC6E.separator(factor=1.0)
row_E256E = col_4AC6E.row(heading='', align=False)
row_E256E.alert = False
row_E256E.enabled = True
row_E256E.active = True
row_E256E.use_property_split = False
row_E256E.use_property_decorate = False
row_E256E.scale_x = 9.376953125
row_E256E.scale_y = 1.18
没有合适的资源?快使用搜索试试~ 我知道了~
Blender程序化三维建筑楼房自动生成器+预设 Auto-Building v1.1.4
共2个文件
py:1个
blend:1个
需积分: 0 0 下载量 77 浏览量
2024-05-07
14:46:27
上传
评论
收藏 1.16MB ZIP 举报
温馨提示
Auto-Building是一个强大的插件,它利用Blender的Geometry Node,根据您的喜好毫不费力地创建各种建筑结构!您无需了解 Geometry Node 即可使用它,一切都在易于使用的界面下得到简化。使用此插件,您可以输入各种建筑元素,例如门、窗、面板等,这些元素将按程序分布在一个简单的网格中,从而形成一个复杂而详细的建筑。它带有一个自定义界面,使您的创建过程变得容易。您无需知道几何节点即可使用它!只需拖放要使用的对象集合并更改设置即可获得所需的结果。该插件的美妙之处在于它在自动化和手动控制之间提供了平衡。虽然它简化了建筑创建过程,但它也允许您保留一些手工制作的建模控制。通过这种方式,您可以微调外观并实现您想要的确切美感。工具工作流的主要思想是,您需要将特殊材质分配给要看到变成对象的面。如果这个对象有一个应用了布尔材质的网格,它甚至会在你的立面上创建一个洞。不再有平坦的窗户,因为你懒得在你的外墙上加一个洞!然后,附加组件会自动为您放置。该插件附带一个包含示例建筑的混合文件,供您查看可以做什么或在您自己的项目中使用它们!其中有 50 多个:) 如果您想在资产浏览器中使
资源推荐
资源详情
资源评论
收起资源包目录
1707141575_f8cfdb6ef66824f464bb12d12ad5f57c.zip (2个子文件)
autobuilding
__init__.py 63KB
assets
Auto-Building_1.1_Start.blend 1.16MB
icons
共 2 条
- 1
资源评论
one行feng
- 粉丝: 1641
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功