国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SketchUp輔助風(fēng)景園林設(shè)計(jì)技術(shù)開發(fā)

2022-07-23 15:51周丁丁
現(xiàn)代計(jì)算機(jī) 2022年10期
關(guān)鍵詞:朝向插件原點(diǎn)

周丁丁

(博興縣公用事業(yè)服務(wù)中心,濱州 256500)

0 引言

當(dāng)今,在風(fēng)景園林學(xué)科中,不管以圖片的方式還是其他多媒體(如虛擬現(xiàn)實(shí))的方式展示設(shè)計(jì)方案,三維模型的制作一般都是必不可少的環(huán)節(jié)。在三維模型的制作中,Trimble SketchUp(文中簡(jiǎn)稱SketchUp)彌補(bǔ)了項(xiàng)目可視化的不足,以“人人可操作的3D軟件”的優(yōu)勢(shì)得到了從業(yè)者廣泛的應(yīng)用。

園林植物是風(fēng)景園林的重要組成部分,對(duì)于三維模型中園林植物的制作,在SketchUp中通常是運(yùn)用以下兩種方法:

(1)將樹制作成SketchUp中的組件,再將這個(gè)組件通過復(fù)制或者類似復(fù)制的陣列操作來實(shí)現(xiàn)。

(2)通過SketchUp與其他軟件的文件交換,通常是在AutoCAD中將樹制作成一個(gè)塊,并將這個(gè)塊通過復(fù)制或者陣列再導(dǎo)入SketchUp中,將這個(gè)塊(SketchUp跟AutoCAD的文件交換中,將AutoCAD中的塊轉(zhuǎn)化為SketchUp中的組件)通過SketchUp中的組件替換功能實(shí)現(xiàn)。

這兩種方法中,其他的樹其底層都是通過對(duì)同一棵樹的復(fù)制來繪制的,所以形成的結(jié)果就是同一種樹的大小和角度都是相同的(見圖1),這顯然是不符合自然規(guī)律的。

圖1 所有的樹都同樣大小

如果保持這樣的結(jié)果,將使三維模型和后期以三維模型為基礎(chǔ)生成的其他文件看起來很不自然。為了讓三維模型看起來更自然,就需要挨個(gè)調(diào)整每一棵樹的大小,由于園林中的樹通常很多(尤其是綠化占主要內(nèi)容的項(xiàng)目),而且SketchUp本身自帶的縮放或旋轉(zhuǎn)工具效率不高,所以這就意味著較大的工作量和較低的工作效率。

1 技術(shù)手段

為了使運(yùn)用SketchUp制作的三維模型更加自然,提高勞動(dòng)效率,降低勞動(dòng)強(qiáng)度,本文開發(fā)了一款SketchUp插件,其可以一次性地按照用戶設(shè)定的縮放和旋轉(zhuǎn)邊界,以組件的原點(diǎn)為基準(zhǔn)對(duì)所選組件實(shí)現(xiàn)批量隨機(jī)縮放,從而解決上述的問題,使模型看起來更自然。

插件運(yùn)用Ruby語言開發(fā),Ruby也是SketchUp命令的底層語言。

插件通過each方法遍歷用戶選擇的每一個(gè)組件,并使其以原點(diǎn)為原點(diǎn)進(jìn)行縮放/旋轉(zhuǎn):

2 技術(shù)人性化設(shè)計(jì)

為方便用戶的使用,插件在算法中過濾掉了用戶選擇的圖元中的其它元素,使得縮放/旋轉(zhuǎn)變換只對(duì)組件起作用:

為了在用戶填反最大值/最小值的情況下也能變換,插件采用自動(dòng)將用戶實(shí)際填入的值中大的作為最大值,小的作為最小值的處理方案(但仍會(huì)提示用戶檢查是否有其他錯(cuò)誤):

#不管用戶如何填寫,最大值總是取大的,最小值總是取小的。

3 技術(shù)的使用方法和使用效果

3.1 插件的運(yùn)行環(huán)境

經(jīng)測(cè)試,插件適合以下操作系統(tǒng)版本和SketchUp版本的任意組合。

操作系統(tǒng)版本:Windows7、Windows10

SketchUp版本:SketchUp8、SketchUp2013-2021

在硬件方面,SketchUp8及以上版本的硬件都滿足插件的運(yùn)行需求。

3.2 插件的使用方法和效果

插件的名稱為“隨機(jī)縮放/旋轉(zhuǎn)”,通過Random_Scale_and_Rotation.rbz的rbz文件提供。

在SketchUp中,依次點(diǎn)擊菜單欄擴(kuò)展程序管理器→安裝擴(kuò)展程序→根據(jù)用戶的存儲(chǔ)位置找到程序→打開即可將插件安裝到SketchUp中(見圖2)。

圖2 插件的安裝方法

插件安裝后位于工具欄中,默認(rèn)是隱藏的,使用時(shí)依次點(diǎn)擊視圖→工具欄→找到隨機(jī)縮放/旋轉(zhuǎn)并將前面復(fù)選框中的√勾選(或者在任意工具欄的空白處右擊,在彈出的菜單中找到隨機(jī)縮放/旋轉(zhuǎn)勾選)即可顯示插件。插件的圖標(biāo)為兩棵樹。

當(dāng)用戶的選擇集中不包含組件時(shí),圖標(biāo)是不可用狀態(tài)(grey),當(dāng)用戶的選擇集中包含組件時(shí),插件即自動(dòng)激活(enable)。用戶點(diǎn)擊插件圖標(biāo),即可實(shí)現(xiàn)對(duì)所選組件的隨機(jī)縮放/旋轉(zhuǎn)。

用戶點(diǎn)擊圖標(biāo),即彈出輸入縮放/旋轉(zhuǎn)邊界輸入框,讓用戶輸入縮放/旋轉(zhuǎn)的邊界,縮放比例以百分比為單位,旋轉(zhuǎn)角度以角度為單位,默認(rèn)縮放比例為80%~120%,旋轉(zhuǎn)角度為0°~360°(見圖3)。

圖3 用戶可在輸入框中輸入縮放/旋轉(zhuǎn)上下界

用戶輸入數(shù)值后點(diǎn)擊確定按鈕,即按照輸入的數(shù)值隨機(jī)縮放/旋轉(zhuǎn)用戶選擇的組件(見圖4)。

圖4 樹隨機(jī)批量縮放/旋轉(zhuǎn)效果

插件的第1個(gè)易用性在于插件在進(jìn)行隨機(jī)縮放/旋轉(zhuǎn)的過程中過濾掉了用戶選擇集中的其他圖元,只對(duì)組件起作用,由于SketchUp的選擇工具本身比較難用,這樣就避免了用戶誤將其它圖元選擇入選擇集時(shí)產(chǎn)生誤操作的情況。如在圖中,若用戶的選擇集中還包含了后邊的建筑、花池、草地、路,它們分別是SketchUp中的組、面、線圖元——但都不是組件圖元,插件并不對(duì)它們起作用,而只對(duì)組件圖元樹進(jìn)行如圖4所示的隨機(jī)旋轉(zhuǎn)或/和縮放。

需要注意的是,插件是忽略角度的周期性的,即插件認(rèn)為10°跟370°是不同的角度,所以用戶的旋轉(zhuǎn)角度界限輸入為0°~10°和0°~370°時(shí)的效果是不同的,前者只能讓組件在0°~10°之間產(chǎn)生一個(gè)微小的隨機(jī)旋轉(zhuǎn),后者則能產(chǎn)生超過一個(gè)圓周的隨機(jī)旋轉(zhuǎn)。

另外,根據(jù)SketchUp的算法,旋轉(zhuǎn)只對(duì)沒有勾選“總是朝向相機(jī)”選項(xiàng)的組件起作用,對(duì)于勾選了“總是朝向相機(jī)”的組件,不管怎么旋轉(zhuǎn),總是紅原點(diǎn)藍(lán)這個(gè)平面面向用戶(見圖5)。這不是插件的缺陷,而是SketchUp默認(rèn)的算法,這也是符合日常行為邏輯的,如一個(gè)圖片制成的面片樹組件,我們總是希望這個(gè)圖片面向著我們,這樣看起來才像棵樹,如果這個(gè)面轉(zhuǎn)了,它就是一條線了(轉(zhuǎn)90°的時(shí)候就只剩下一條線),這是我們所不希望的結(jié)果。

圖5 旋轉(zhuǎn)命令對(duì)勾選了“總是朝向相機(jī)”的組件不起作用

圖4中的樹就是一種總是朝向相機(jī)的組件,所以隨機(jī)旋轉(zhuǎn)在圖4中并不起作用,圖6中的樹并不總是朝向相機(jī),所以隨機(jī)旋轉(zhuǎn)對(duì)圖6是起作用的。

圖6 旋轉(zhuǎn)命令對(duì)沒有勾選“總是朝向相機(jī)”的組件起作用

若用戶錯(cuò)誤地將縮放/旋轉(zhuǎn)的最小值和最大值寫反了——即用戶將最大值(最小值)填寫成了最小值(最大值),插件會(huì)向用戶提示并根據(jù)用戶的選擇執(zhí)行忽略或者修改錯(cuò)誤,這是插件的第2個(gè)易用性。

當(dāng)用戶將最大值和最小值填反時(shí),插件會(huì)彈出消息框,提示用戶填反了,并詢問用戶是否忽略錯(cuò)誤,將用戶填寫的實(shí)際數(shù)值中的最大值和最小值作為最大值和最小值進(jìn)行隨機(jī)縮放/旋轉(zhuǎn),若用戶選擇是,插件將忽略用戶的錯(cuò)誤,自動(dòng)按照用戶實(shí)際填寫數(shù)值中的最大值(最小值)作為縮放/旋轉(zhuǎn)邊界進(jìn)行運(yùn)算。若用戶選擇否,則返回輸入框界面,讓用戶修改數(shù)值后提交。

插件的退出:插件可以在輸入框界面點(diǎn)擊關(guān)閉或者取消退出。

4 結(jié)語

插件可幫助實(shí)現(xiàn)園林三維模型的自然開發(fā),但顯而易見,其是針對(duì)SketchUp組件圖元的一項(xiàng)操作,所以,它適合有組件此類變換需求的任何行業(yè),如舞臺(tái)場(chǎng)景、游戲設(shè)計(jì)、工業(yè)設(shè)計(jì)、建筑設(shè)計(jì)等。另外,對(duì)于當(dāng)前的計(jì)算機(jī)系統(tǒng)或者編程語言,是不能產(chǎn)生真正意義的隨機(jī)序列的,所以同樣,插件對(duì)樹的隨機(jī)調(diào)整并不是真正意義上的隨機(jī)——這并不是插件的缺陷,而是當(dāng)前信息技術(shù)和計(jì)算機(jī)的發(fā)展水平。但顯然,即使如此,對(duì)于我們關(guān)注視覺效果的三維模型來說已經(jīng)足夠了。

猜你喜歡
朝向插件原點(diǎn)
朝向馬頭的方向
朝向馬頭的方向
用好插件瀏覽器標(biāo)簽頁管理更輕松
數(shù)軸在解答實(shí)數(shù)題中的應(yīng)用
烏龜快跑
請(qǐng)個(gè)瀏覽器插件全能管家
基于jQUerY的自定義插件開發(fā)
話題:回到原點(diǎn)
朝向坐標(biāo)
7.1 數(shù)形結(jié)合思想
酒泉市| 莱芜市| 岫岩| 秦皇岛市| 建宁县| 桃江县| 新绛县| 富蕴县| 阿拉善左旗| 凌海市| 稷山县| 彭泽县| 石景山区| 夹江县| 淄博市| 裕民县| 江阴市| 九龙县| 班玛县| 香格里拉县| 鄂托克前旗| 武宣县| 连江县| 乐平市| 武邑县| 视频| 湟中县| 陵水| 措勤县| 都江堰市| 钟祥市| 临城县| 麻栗坡县| 邵武市| 宿松县| 昌都县| 逊克县| 翁源县| 宜州市| 永德县| 精河县|