フラットシェーディング

※ParaView 5.0.0より、Light KitをOFFにすることでフラットシェーディング表示が得られるようになった。

モデル操作によりフラットシェーディングを実現する方法である。適用不可能な場合を除けば、本手法を利用するのが好ましい。

任意のソースを選択した状態で本スクリプトを適用すれば、選択したソースがフラットシェーディング状態となる。フラットシェーディングを実現するため、ソースの表面のみをExtract Surfaceフィルタで抽出し、Generate Surface Normalsフィルタで法線情報を与える。ソースのシェーディングはここで出力される法線(Normals)をもとに行われるが、Calculatorフィルタで前記法線をカメラ方向に揃えることで、立体感のない表示となる。

動作確認環境

ParaView 3.14.1 32bit、Windows 7 SP1 32bit、Python 2.7.2

Script

flatShading.py

import numpy as np

view = GetActiveView()
view.LightSwitch = True
view.UseLight = False

ExtractSurface()
GenerateSurfaceNormals()

calc = Calculator()
calc.AttributeMode = 'point_data'
new_vec = np.array(view.CameraPosition) - np.array(view.CameraFocalPoint)
new_vec /= np.linalg.norm(new_vec)
calc.Function = '(' + str(new_vec[0]) + ')*iHat+(' + str(new_vec[1]) + ')*jHat+(' + str(new_vec[2]) + ')*kHat'
calc.ResultArrayName = 'Normals'

Show()
タグ: , , , , , , , ,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*