🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

Q&A

解決済

1回答

1455閲覧

blenderの使い方について

akane00

総合スコア6

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

0グッド

0クリップ

投稿2019/11/06 15:19

編集2019/11/06 23:10

下記URLのサイトを元にblenderで作りたいのですが、スクリーンショットのようなエラーになりました。何が原因でしょうか。

https://qiita.com/santarou6/items/2856ce018b3ce5627f8f

イメージ説明

import

1import math 2 3r = 10 4 5for n in range(0,360,3): 6 7 for rr in [-1.5,-1.2, -0.9, -0.6, -0.3, 0.0, 0.3, 0.6, 0.9, 1.2,1.5]: 8 nn = n / 2 9 x1 = (r) * math.cos(n * math.pi/180) 10 y1 = (r) * math.sin(n * math.pi/180) 11 x2 = x1 + (rr) * math.sin(nn * math.pi/180) * math.cos(n * math.pi/180) 12 y2 = y1 + (rr) * math.sin(nn * math.pi/180) * math.sin(n * math.pi/180) 13 z2 = (rr) * math.cos(nn * math.pi/180) 14 scene = (None,(x2, y2, z2),0.6) 15mesh = bpy.data.meshes.new('mebiusu') 16mesh.from_pydata(r,nn,x1,y1,x2,y2,z2) 17 18obj = bpy.data.objects.new('mebiusu', mesh) 19bpy.context.scene.objects.link(obj) 20 21obj.select = True 22コード

追記:URLのソースコードをそのまま使うにはShade3Dというソフトが必要なのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーの原因はまず

mesh.from_pydata(r,nn,x1,y1,x2,y2,z2)

にあります。
from_pydataは「頂点配列」「エッジ配列」「フェイス配列」を引数にとりますが、見た所数値で7個入れているため、エラーとなっています。
ドキュメント: from_pydata

参考元にはカスタムメッシュを作成するようなコードはないので、この部分はオリジナルでしょうか?
もしそうであれば、最終的に「何を作りたいのか」がもう少しわかると良いです。

※前の質問にも記載しましたが、コードはマークダウン記法で書くと見やすくなります。
※質問文は編集できるので、削除せず修正してください。

【追記】
参考サイトでは、メビウスの輪の各サンプリング座標を計算し、最終的に x2, y2, z2 という座標を求めています。その座標に下記の関数で球体オブジェクトを次々に配置している形となります。

scene.create_sphere(None,(x2, y2, z2),0.6)

blenderでも同じような機能として bpy.ops.mesh.primitive_uv_sphere_add があるので、これを利用して

import bpy import math r = 10 for n in range(0,360,3): for rr in [-1.5,-1.2, -0.9, -0.6, -0.3, 0.0, 0.3, 0.6, 0.9, 1.2,1.5]: nn = n / 2 x1 = (r) * math.cos(n * math.pi/180) y1 = (r) * math.sin(n * math.pi/180) x2 = x1 + (rr) * math.sin(nn * math.pi/180) * math.cos(n * math.pi/180) y2 = y1 + (rr) * math.sin(nn * math.pi/180) * math.sin(n * math.pi/180) z2 = (rr) * math.cos(nn * math.pi/180) bpy.ops.mesh.primitive_uv_sphere_add(location=(x2, y2, z2), size=0.6)

上記のコードでおおよそ同じ結果が得られるかと思います。

投稿2019/11/06 15:53

編集2019/11/07 00:21
Kapustin

総合スコア1186

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akane00

2019/11/06 16:04

コードの書き方はこれであっていますか? 自分はまだプログラミングについて練習中で、自分の解釈でやってみたのですがどのようにすればいいのかわかりません。blenderではこの図形は作れないのでしょうか。
Kapustin

2019/11/06 16:30 編集

マークダウンの記法は合っています。見やすいですね! 参考サイトのものをそのまま作りたいという意図で合っていますか?
akane00

2019/11/06 16:39 編集

何度も本当にありがとうございます。理解が遅く本当にすみません。 この形のようなメビウスの輪を作りたいです。
akane00

2019/11/07 00:43

何度も丁寧にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問