這張圖的效果是如何實現的?

時間 2021-05-31 09:43:31

1樓:賁禹強

這個事情其實蠻尷尬的。。。看到前面有那麼多前輩做出了如此用心的回答。。。

只是因為標籤裡有Grasshopper,我不清楚是不是題主表示一定要用GH實現,但是事實是我覺得這個東西真的是用Plexus做的。。。。。

乙個AE外掛程式。5分鐘輕鬆出圖。。。

2樓:地鐵風

Blender 實現。先放成品:

《更新》

這是 40k 個點的:

用外掛程式什麼的太無聊了,自己寫程式才是王道。Delaunay triangulation 了解一下?當然這個演算法寫起來挺麻煩,所以我直接找了現成的 有這個以後剩下的都是體力活了。

既然是 triangulation,首先要有一坨點,所以步驟大概是這樣的:

生成一坨隨機的座標

用 triangulation 生成三角形

用三角形生成 mesh

對 mesh 做合適的變形

Blender 的 cycle 渲染器不能渲染「點」這種東西,所以要把這一坨點變成一坨球體

Blender 也不能直接渲染邊(edge),所以要把邊變成 mesh

渲染後期

首先生成隨機座標。在乙個範圍裡隨機生成點有很多方法,其中一些演算法可以讓生成的點看起來比較「均勻」,這樣出來的效果是墜吼的。但是我懶,所以我直接用了隨機數

class

Point2D

(object

):def

__init__

(self,x

=0,y

=0):self.x

=xself.y

=ydeftoVert

(self,z

=0):return

(self.x

,self.y

,z)def

genRandomPoints

(count

,xrange

,yrange

):foriin

range

(count

):yield

Point2D

(random

.uniform(*

xrange

),random

.uniform(*

yrange

))然後生成三角形並生成 mesh

defcreateMesh

(points

):me

=bpy

.data

.meshes

.new

("TheMesh")ob

=bpy

.data

.objects

.new

("TheObject",me

)ob.location

=Vector((0

,0,0

))ob

.show_name

=True

# Link object to scene and make active

scn=

bpy.

context

.scene

scn.

objects

.link(ob

)scn

.objects

.active=ob

ob.select

=True

# Create mesh from given verts, faces.

verts

=tuple

(point

.toVert

()for

point

inpoints

)faces

=computeDelaunayTriangulation

(points)me

.from_pydata

(verts,,

faces

)# Update mesh with new datame.

update

()return

obcreateMesh

(tuple

(genRandomPoints

(10000,(

-4,4

),(-2

,2))))

我這裡只用了 10000 個點。本來計畫只是試一下,成品應該用 40000 個點的,但是最後我懶得再搞一次了出來的效果是這樣的:

這個 mesh 還是平平的一坨,不好看,所以要加置換和變形

然後就可以放小球了。

defcreateBallsFromMesh

(mesh

):Verts

=mesh

.vertices

bpy.

ops.

object

.select_all

(action

='DESELECT'

)bpy

.ops

.mesh

.primitive_uv_sphere_add

(segments=4

,ring_count=4

,size

=0.002

,location=(

0,0,

0))RefBall

=bpy

.context

.object

Balls=

i=0for

Vert

inVerts:if

i%100==0:

print

('.'

,end=""

,flush

=True

)Ball

=RefBall

.copy

()Ball

.data

=RefBall

.data

.copy

()bpy

.context

.scene

.objects

.link

(Ball

)Ball

.location

=Vert.co

.to_tuple

()Balls.(

Ball)i

+=1return

Balls

Balls

=createBallsFromMesh

(bpy

.context

.selected_objects[0

].data

)bpy

.ops

.object

.select_all

(action

='DESELECT'

)for

Ball

inBalls

:Ball

.select

=True

bpy.

context

.scene

.objects

.active

=Balls[0

]bpy

.ops

.object

.join

()這裡有個坑。新增小球的時候不要用 10000 次 primitive_uv_sphere_add(),而是要建乙個樣本然後 copy 10000 次。(思考題:

這是為什麼呢?)

球長這樣:

接下來就沒 Python 什麼事了(當然你完全可以寫個 Python 讓整個過程全自動,但是我懶啊)。在 mesh 上加個 Wireframe 修改器,把 mesh 和球的材質都設成自發光,然後就可以渲染了。

直接渲染出來效果是比較愣的,還需要後期一下。大概這樣:

然後加字出圖就可以了。

整個流程有很多可以玩的地方:

隨機生成座標的演算法對最終效果影響很大,有很多 non-trivial 的演算法可選。

可以生成更密的 mesh。

可以生成多個 mesh 放在一起。

後期的時候有各種效果可以玩,比如這種殺馬特效果:

《更新》

玩了點別的花樣,高斯分布的點,按距離隨機生成 edge:

Blender 原始檔:https://

,注意裡面有兩個 scenes。

3樓:Lu Kris

「當我看到乙隻鳥,它走路像鴨子,游泳像鴨子,叫聲像鴨子,我就稱其為鴨子。」

所以我覺得這是用AE的Plexus外掛程式做的。

請問這張海報的效果是如何實現的?

Orthoplex 我來寫個回答,純Photoshop實現。看了看幾個高讚回答,似乎都沒有正確實現出題主要的效果啊。題主那個效果,重點在於用線寬的變化實現明暗的變化。使用Grasshopper那個回答實現的效果是對的,不過這個效果實際上用Photoshop就能輕鬆做出來,需要的只是一點奇思妙想。我沒...

這張圖是否用 Ps 完成,如何實現?

ku ha ps可以的。我就不作圖了,直接說。先打出文字,然後用變形工具扭曲到這個角度,這作為第一層,按住alt鍵,同時不斷按上鍵或者下鍵,多次按直到得到你期望的厚度,這時候就會做成乙個很標準的立體文字形狀了。得到這個形狀以後,合併除最上層以外的圖層,就可以對上層和立面分別上色做光影了。要注意的是,...

如何評價數學的深淵這張圖?

雲處安 特別反對數學研究引申出來的推論。數學是形式和數量的可學 數學推論用來論證形式和數量才合邏輯。最大的錯誤就在於,竟把所謂純粹數學的真理,都看作抽象的真理和一般的真理。這真是大錯特錯,因此眼見世人竟普遍同意這種看法,真是吃驚不小。數學的原理決不是一般的原理。比方說,比數對形式和數量是適用的,對心...