3D重心のようなものはありますか?私は完全に明確にしましょう。私はこのサイトとウェブ上で過去2日間の重心について読んで読んでいました。だから、Wikipediaを含むトピックに関する既存の記事を完全に認識しています。3D重心の計算方法を教えてください。
それでは、私が何をしようとしているのか説明しましょう。基本的には、エッジや頂点を選択したいが、面は選択したくない。次に、私は3D重心位置にオブジェクトを配置したいと思います。
私はしたくない何を教えてあげる:
- より高詳細なメッシュを持っている任意の方向にすぎ引き上げる頂点の平均値を、。
- バウンディングボックスの中心です。このシナリオでは既に何かが動作しています。
重心についての提案はありますが、頂点やエッジだけでは何も定義されていないため、これはどのように機能するのでしょうか?特にエッジループがある場合選択された。
キックのために、私はあなたを紹介します私は@Emile's codeリファレンスとして使用して、アップ働いたが、私はそれはそれが必要な方法を働いているとは思わないものもPyMEL:
from pymel.core import ls, spaceLocator
from pymel.core.datatypes import Vector
from pymel.core.nodetypes import NurbsCurve
def get_centroid(node):
if not isinstance(node, NurbsCurve):
raise TypeError("Requires NurbsCurve.")
centroid = Vector(0, 0, 0)
signed_area = 0.0
cvs = node.getCVs(space='world')
v0 = cvs[len(cvs) - 1]
for i, cv in enumerate(cvs[:-1]):
v1 = cv
a = v0.x * v1.y - v1.x * v0.y
signed_area += a
centroid += sum([v0, v1]) * a
v0 = v1
signed_area *= 0.5
centroid /= 6 * signed_area
return centroid
texas = ls(selection=True)[0]
centroid = get_centroid(texas)
print(centroid)
spaceLocator(position=centroid)
私はこの回答を簡単にするつもりですが、後でそれをテストすることはできません。私はあなたの投稿を続けます。 – jedmao