設計插件
Lightscape,行業簡稱為Ls.缺點是比較慢,我出了一套圖用了好幾天(電腦配置太差也是一個原因);而且參數不好更改。
還有一個是3DS
Max的插件VRay,這東西比較好改參數,效果也好預覽,建議用這個
Ⅱ 做設計的ps插件推薦
1、ps設計助理-設計師必備高效設計工具,裡面有模版庫、自定義布局、常用功能、字體管理、字體設置、樣式管理、重命名圖層、動作管理、圖片處理等9大核心功能。2、Filter Forge- 水彩濾鏡插件
提供豐富的濾鏡和視覺特效,所有的濾鏡都是可調節和可編輯的,並且無縫平鋪、獨立解析度和支持HDRI照明等。3、達芬奇助理 - 一款超級強大的PS顏色插件神器,可以快速修改顏色,快速配色 擁有關聯配色、調色板、在線配色庫三大核心功能 4、摹客iDoc - 設計稿和切圖導出工具
摹客iDoc可以讓產品、設計和開發在線協作,功能非常強大。支持自動生成設計規范、在線評論、自動標注、產品文檔編輯和管理、原型拖拽製作、切圖一鍵下載、團隊成員和項目管理等。 5、ParticleShop - 筆刷濾鏡插件
提供11種高效炫酷的畫筆工具,可以輕松再現各種逼真炫酷的視覺效果和紋理, 例如毛發、火、煙、灰塵以及光等。 6、Fontea - 免費的字體插件
免費谷歌字體插件,提供800多種免費字體資源, 還保持實時自動更新。
7、Guide Guide - 自動輔助線插件
一款很常用的PS輔助線插件工具, 可以幫助設計師添加精確到像素級別的參考線,以輔助設計。支持以畫板、圖層對象為基礎自動添加輔助線,從而節省設計師手動創建參考輔助線的時間。 而且,該插件還支持根據設計師需求,自定義和分享所需設計網格, 以加快界面設計。
Ⅲ 3dmax室內設計插件哪個好用
我建議你用【渲夢工廠】這個插件的,軟體理念是為了方便設計師而研發的一版款渲染建模於一體權插件,裡面功能多達200多個界面分為9大部分(功能、渲染、建模、相機、動畫、燈光、文件、材質、實用功能、)模型都是一鍵生成操作快捷簡單、容易上手;場景太大也可以使用強大的清理功能可以快速檢測到牆景大量垃圾文件立刻可以縮小文件大小同時也可以解決占內存的問題一舉兩得。
直接看視頻的話,會更加容易理解
Ⅳ 如何設計插件式結構的程序,兼談Python語言
為了擴充軟體的功能,通常我們會把軟體設計成插件式結構。Python這樣的動態語言天生就支持插件式編程。與C++相比,Python已經定義好模塊的介面,想要載入一個插件,一個__import__()就能很輕松地搞定。不需要特定的底層知識。而且與C++等靜態語言相比,Python的插件式結構更顯靈活。因為插件載入後,可以利用Python語言的動態性,充分地修改核心的邏輯。
簡單地說一個__import__()可能不大清楚。現在就來看一個最簡單的插件式結構程序。它會掃描plugins文件夾下的所有.py文件。然後把它們載入。
#-*- encoding: utf-8 -*-#main1.pyimport osclass Platform:
def __init__(self):
self.loadPlugins()
def sayHello(self, from_):
print "hello from %s." % from_
def loadPlugins(self):
for filename in os.listdir("plugins"):
if not filename.endswith(".py") or filename.startswith("_"):
continue
self.runPlugin(filename)
def runPlugin(self, filename):
pluginName=os.path.splitext(filename)[0]
plugin=__import__("plugins."+pluginName, fromlist=[pluginName])
#Errors may be occured. Handle it yourself.
plugin.run(self)if __name__=="__main__":
platform=Platform()
然後在plugins子目錄裡面放入兩個文件:
#plugins1.pydef run(platform):
platform.sayHello("plugin1")#plugins2.pydef run(platform):
platform.sayHello("plugin2")
再創建一個空的__init__.py在plugins文件夾裡面。從package裡面導入模塊的時候,Python要求一個__init__.py。
運行main1.py,看一下運行的結果。首先是列印一下文件夾結構方便大家理解:
h:\projects\workon\testplugins>tree /f /a
卷 Data 的文件夾 PATH 列表
卷序列號為 ****-****
H:.
| main1.py
|
\---plugins
plugin1.py
plugin2.py
__init__.py
h:\projects\workon\testplugins>main1.py
hello from plugin1.
hello from plugin2.
一般地,載入插件前要首先掃描插件,然後依次載入並運行插件。我們上面的示常式序main1.py也是如此,分為兩個函數。第一個loadPlugins()掃描插件。它把plugins目錄下面所有.py的文件除了__init__.py都當成插件。runPlugin()載入並運行插件。其中兩個關鍵:使用__import__()函數把插件當成模塊導入,它要求所有的插件都定義一個run()函數。各種語言實現的插件式結構其實也基本上分為這兩個步驟。所不同的是,Python語言實現起來更加的簡潔。
或許聽起來還有點玄奧。詳細地說一下__import__()。它和常見的import語句很相似,只不過換成函數形式並且返回模塊以供調用。import mole相當於__import__("mole"),from mole import func相當於__import__("mole", fromlist=["func"]),不過與想像有點不同,import package.mole相當於__import__("package.mole", fromlist=["mole"])。
如何調用插件一般有個約定。像我們這里就約定每個插件都實現一個run()。有時候還可以約定實現一個類,並且要求這個類實現某個管理介面,以方便核心隨時啟動、停止插件。要求所有的插件都有這幾個介面方法:
#interfaces.pyclass Plugin:
def setPlatform(self, platform):
self.platform=platform
def start(self):
pass
def stop(self):
pass
想要運行這個插件,我們的runPlugin()要改一改,另外增加一個shutdown()來停止插件:
class Platform:
def __init__(self):
self.plugins=[]
self.loadPlugins()
def sayHello(self, from_):
print "hello from %s." % from_
def loadPlugins(self):
for filename in os.listdir("plugins"):
if not filename.endswith(".py") or filename.startswith("_"):
continue
self.runPlugin(filename)
def runPlugin(self, filename):
pluginName=os.path.splitext(filename)[0]
plugin=__import__("plugins."+pluginName, fromlist=[pluginName])
clazz=plugin.getPluginClass()
o=clazz()
o.setPlatform(self)
o.start()
self.plugins.append(o)
def shutdown(self):
for o in self.plugins:
o.stop()
o.setPlatform(None)
self.plugins=[]if __name__=="__main__":
platform=Platform()
platform.shutdown()
插件改成這樣:
#plugins1.pyclass Plugin1:
def setPlatform(self, platform):
self.platform=platform
def start(self):
self.platform.sayHello("plugin1")
def stop(self):
self.platform.sayGoodbye("plugin1")def getPluginClass():
return Plugin1#plugins2.pydef sayGoodbye(self, from_):
print "goodbye from %s." % from_class Plugin2:
def setPlatform(self, platform):
self.platform=platform
if platform is not None:
platform.__class__.sayGoodbye=sayGoodbye
def start(self):
self.platform.sayHello("plugin2")
def stop(self):
self.platform.sayGoodbye("plugin2")def getPluginClass():
return Plugin2
運行結果:
h:\projects\workon\testplugins>main.py
hello from plugin1.
hello from plugin2.
goodbye from plugin1.
goodbye from plugin2.
詳細觀察的朋友們可能會發現,上面的main.py,plugin1.py, plugin2.py幹了好幾件令人驚奇的事。
首先,plugin1.py和plugin2.py裡面的插件類並沒有繼承自interfaces.Plugin,而platform仍然可以直接調用它們的start()和stop()方法。這件事在Java、C++裡面可能是件麻煩的事情,但是在Python裡面卻是件稀疏平常的事,彷彿吃飯喝水一般正常。事實上,這正是Python鼓勵的約定編程。Python的文件介面協議就只規定了read(), write(), close()少數幾個方法。多數以文件作為參數的函數都可以傳入自定義的文件對象,只要實現其中一兩個方法就行了,而不必實現一個什麼FileInterface。如果那樣的話,需要實現的函數就多了,可能要有十幾個。
再仔細看下來,getPluginClass()可以把類型當成值返回。其實不止是類型,Python的函數、模塊都可以被當成普通的對象使用。從類型生成一個實例也很簡單,直接調用clazz()就創建一個對象。不僅如此,Python還能夠修改類型。上面的例子我們就演示了如何給Platform增加一個方法。在兩個插件的stop()裡面我們都調用了sayGoodbye(),但是仔細觀察Platform的定義,裡面並沒有定義。原理就在這里:
#plugins2.pydef sayGoodbye(self, from_):
print "goodbye from %s." % from_class Plugin2:
def setPlatform(self, platform):
self.platform=platform
if platform is not None:
platform.__class__.sayGoodbye=sayGoodbye
這里首先通過platform.__class__得到Platform類型,然後Platform.sayGoodbye=sayGoodbye新增了一個方法。使用這種方法,我們可以讓插件任意修改核心的邏輯。這正在文首所說的Python實現插件式結構的靈活性,是靜態語言如C++、Java等無法比擬的。當然,這只是演示,我不大建議使用這種方式,它改變了核心的API,可能會給其它程序員造成困惑。但是可以採用這種方式替換原來的方法,還可以利用「面向切面編程」,增強系統的功能。
接下來我們還要再改進一下載入插件的方法,或者說插件的布署方法。前面我們實現的插件體系主要的缺點是每個插件只能有一個源代碼。如果想附帶一些圖片、聲音數據,又怕它們會和其它的插件沖突。即使不沖突,下載時分成單獨的文件也不方便。最好是把一個插件壓縮成一個文件供下載安裝。
Firefox是一個支持插件的著名軟體。它的插件以.xpi作為擴展名,實際上是一個.zip文件,裡麵包含了javascript代碼、數據文件等很多內容。它會把插件包下載復制並解壓到%APPDATA%\Mozilla\Firefox\Profiles\XXXX.default\extensions裡面,然後調用其中的install.js安裝。與此類似,實用的Python程序也不大可能只有一個源代碼,也要像Firefox那樣支持.zip包格式。
實現一個類似於Firefox那樣的插件布署體系並不會很難,因為Python支持讀寫.zip文件,只要寫幾行代碼來做壓縮與解壓縮就行了。首先要看一下zipfile這個模塊。用它解壓縮的代碼如下:
import zipfile, osdef installPlugin(filename):
with zipfile.ZipFile(filename) as pluginzip:
subdir=os.path.splitext(filename)[0]
topath=os.path.join("plugins", subdir)
pluginzip.extractall(topath)
ZipFile.extractall()是Python 2.6後新增的函數。它直接解壓所有壓縮包內的文件。不過這個函數只能用於受信任的壓縮包。如果壓縮包內包含了以/或者盤符開始的絕對路徑,很有可能會損壞系統。推薦看一下zipfile模塊的說明文檔,事先過濾非法的路徑名。
這里只有解壓縮的一小段代碼,安裝過程的界面交互相關的代碼很多,不可能在這里舉例說明。我覺得UI是非常考驗軟體設計師的部分。常見的軟體會要求用戶到網站上查找並下載插件。而Firefox和KDE提供了一個「組件(部件)管理界面」,用戶可以直接在界面內查找插件,查看它的描述,然後直接點擊安裝。安裝後,我們的程序遍歷插件目錄,載入所有的插件。一般地,軟體還需要向用戶提供插件的啟用、禁用、依賴等功能,甚至可以讓用戶直接在軟體界面上給插件評分,這里就不再詳述了。
有個小技巧,安裝到plugins/subdir下的插件可以通過__file__得到它自己的絕對路徑。如果這個插件帶有圖片、聲音等數據的時候,可以利用這個功能載入它們。比如上面的plugin1.py這個插件,如果它想在啟動的時候播放同目錄的message.wav,可以這樣子:
#plugins1.pyimport osdef alert():
soundFile=os.path.join(os.path.dirname(__file__), "message.wav")
try:
import winsound
winsound.PlaySound(soundFile, winsound.SND_FILENAME)
except (ImportError, RuntimeError):
passclass Plugin1:
def setPlatform(self, platform):
self.platform=platform
def start(self):
self.platform.sayHello("plugin1")
alert()
def stop(self):
self.platform.sayGoodbye("plugin1")def getPluginClass():
return Plugin1
接下來我們再介紹一種Python/Java語言常用的插件管理方式。它不需要事先有一個插件解壓過程,因為Python支持從.zp文件導入模塊,很類似於Java直接從.jar文件載入代碼。所謂安裝,只要簡單地把插件復制到特定的目錄即可,Python代碼自動掃描並從.zip文件內載入代碼。下面是一個最簡單的例子,它和上面的幾個例子一樣,包含一個main.py,這是主程序,一個plugins子目錄,用於存放插件。我們這里只有一個插件,名為plugin1.zip。plugin1.zip有以下兩個文件,其中description.txt保存了插件內的入口函數和插件的名字等信息,而plugin1.py是插件的主要代碼:
description.txt
plugin1.py
其中description.txt的內容是:
[general]name=plugin1description=Just a test code=plugin1.Plugin1
plugin1.py與前面的例子類似,為了省事,我們去掉了stop()方法,它的內容是:
class Plugin1:
def setPlatform(self, platform):
self.platform=platform
def start(self):
self.platform.sayHello("plugin1")
重寫的main.py的內容是:
# -*- coding: utf-8 -*-import os, zipfile, sys, ConfigParserclass Platform:
def __init__(self):
self.loadPlugins()
def sayHello(self, from_):
print "hello from %s." % from_
def loadPlugins(self):
for filename in os.listdir("plugins"):
if not filename.endswith(".zip"):
continue
self.runPlugin(filename)
def runPlugin(self, filename):
pluginPath=os.path.join("plugins", filename)
pluginInfo, plugin = self.getPlugin(pluginPath)
print "loading plugin: %s, description: %s" % \ (pluginInfo["name"], pluginInfo["description"])
plugin.setPlatform(self)
plugin.start()
def getPlugin(self, pluginPath):
pluginzip=zipfile.ZipFile(pluginPath, "r")
description_txt=pluginzip.open("description.txt")
parser=ConfigParser.ConfigParser()
parser.readfp(description_txt)
pluginInfo={}
pluginInfo["name"]=parser.get("general", "name")
pluginInfo["description"]=parser.get("general", "description")
pluginInfo["code"]=parser.get("general", "code")
sys.path.append(pluginPath)
moleName, pluginClassName=pluginInfo["code"].rsplit(".", 1)
mole=__import__(moleName, fromlist=[pluginClassName, ])
pluginClass=getattr(mole, pluginClassName)
plugin=pluginClass()
return pluginInfo, pluginif __name__=="__main__":
platform=Platform()
與前一個例子的主要不同之處是getPlugin()。它首先從.zip文件內讀取描述信息,然後把這個.zip文件添加到sys.path裡面。最後與前面類似地導入模塊並執行。
解壓還是不解壓,兩種方案各有優劣。一般地,把.zip文件解壓到獨立的文件夾內需要一個解壓縮過程,或者是人工解壓,或者是由軟體解壓。解壓後的運行效率會高一些。而直接使用.zip包的話,只需要讓用戶把插件復制到特定的位置即可,但是每次運行的時候都需要在內存裡面解壓縮,效率降低。另外,從.zip文件讀取數據總是比較麻煩。推薦不包含沒有數據文件的時候使用。
閱讀全文
Ⅳ 有哪些好用的結構設計小軟體或插件
理正,板王,配筋助手,morgain等等
Ⅵ 什麼PPT插件有更全的設計工具
推薦使用使用iSlide插件,iSlide是一款基於PowerPoint的插件工具,包含38個設計輔助功能,8大在線資源庫超20萬專業PPT素材
Ⅶ 室內設計針對sketchup,有哪些好用的插件
1、來makeface 自動封面,這個應該不需要解釋自了,用過su的都懂
2、frontface 將視野中的面都變成正面朝向鏡頭,在渲染中這點極其重要
3、roundcorner 三維倒圓角,模型真實與否其實就靠這個
4、instantroad 對於曲面上的道路建模非常快捷
5、bezierspline 貝茲曲線,可以繪制比su自由得多的曲線,類似cad的spl。更重要的是他自帶曲線焊接功能,異常好用
6、sketchuv 由於su的uv系統渣得令人發指,這個插件可以很好的更改貼圖坐標做到較為合理的將材質賦予上去
7、laubwerk 非常簡單快捷的種樹插件,省去了大量自己做代理物體的時間
8、skatter 散布插件,而且這帶草地素材,配合laubwerk所有植物都搞定了,當然種草種樹只是他的副業,其隨機散布的功能可以用在很多地方
Ⅷ 室內設計從業者必備的插件有哪些
3dmax,Photoshop,AutoCAD,vray。
3dmax:在應用范圍方面,廣泛應用於廣告、影視、工業設計、建築設計、三版維動畫、多媒體製作權、游戲、輔助教學以及工程可視化等領域。
Photoshop:主要處理以像素所構成的數字圖像。使用其眾多的編修與繪圖工具,可以有效地進行圖片編輯工作。ps有很多功能,在圖像、圖形、文字、視頻、出版等各方面都有涉及。
AutoCAD:用於二維繪圖、詳細繪制、設計文檔和基本三維設計。
vray:為不同領域的優秀3D建模軟體提供了高質量的圖片和動畫渲染。
Ⅸ 怎麼安裝魔獸世界別人設計好的插件
放在
f:\魔獸世界\interface\addons
這個文件夾里,然後你就可以在游戲里找到這個插件了
望採納
Ⅹ cad傢具設計插件在哪
針對定製傢具設計師二次開發的插件,效率提升80%以上