﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3AJA%2F2.5%2FPy%2FScripts%2FCookbook%2FCode_snippets%2FMeshes</id>
	<title>Dev:JA/2.5/Py/Scripts/Cookbook/Code snippets/Meshes - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3AJA%2F2.5%2FPy%2FScripts%2FCookbook%2FCode_snippets%2FMeshes"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:JA/2.5/Py/Scripts/Cookbook/Code_snippets/Meshes&amp;action=history"/>
	<updated>2026-07-04T07:45:38Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:JA/2.5/Py/Scripts/Cookbook/Code_snippets/Meshes&amp;diff=141779&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:JA/2.5/Py/Scripts/Cookbook/Code_snippets/Meshes&amp;diff=141779&amp;oldid=prev"/>
		<updated>2018-06-28T20:54:17Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 20:54時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:JA/2.5/Py/Scripts/Cookbook/Code_snippets/Meshes&amp;diff=141778&amp;oldid=prev</id>
		<title>wiki&gt;Blendmild: translate into ja</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:JA/2.5/Py/Scripts/Cookbook/Code_snippets/Meshes&amp;diff=141778&amp;oldid=prev"/>
		<updated>2013-05-10T01:21:16Z</updated>

		<summary type="html">&lt;p&gt;translate into ja&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Page/Header|2.5x|Dev:2.5/Py/Scripts/Cookbook/Code_snippets/Introduction|Dev:2.5/Py/Scripts/Cookbook/Code_snippets/Armatures}}&lt;br /&gt;
=Meshes=&lt;br /&gt;
==Mesh==&lt;br /&gt;
このプログラムは２つのメッシュを作ります。１つは 三角面と四角面の両方を持つ solid な pyramid です。もう１つは wire の三角形です。どちらもメッシュ名を表示します。三角形を移動して pyramid の隣になるように離します。このためには選択されている必要があります。&lt;br /&gt;
[[File:Code_Snippets_Meshes.png|640px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
# File meshes.py&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
import bpy&lt;br /&gt;
&lt;br /&gt;
def createMesh(name, origin, verts, edges, faces):&lt;br /&gt;
    # メッシュとオブジェクトを作成&lt;br /&gt;
    me = bpy.data.meshes.new(name+'Mesh')&lt;br /&gt;
    ob = bpy.data.objects.new(name, me)&lt;br /&gt;
    ob.location = origin&lt;br /&gt;
    ob.show_name = True&lt;br /&gt;
    # シーンにオブジェクトをリンク&lt;br /&gt;
    bpy.context.scene.objects.link(ob)&lt;br /&gt;
&lt;br /&gt;
    # 頂点、辺、面からメッシュを作成。辺か面のいずれかを&lt;br /&gt;
    # [] にしないと問題が起きます&lt;br /&gt;
    me.from_pydata(verts, edges, faces)&lt;br /&gt;
&lt;br /&gt;
    # 新たなデータでメッシュを更新&lt;br /&gt;
    me.update(calc_edges=True)&lt;br /&gt;
    return ob&lt;br /&gt;
&lt;br /&gt;
def run(origin):&lt;br /&gt;
    (x,y,z) = (0.707107, 0.258819, 0.965926)&lt;br /&gt;
    verts1 = ((x,x,-1), (x,-x,-1), (-x,-x,-1), (-x,x,-1), (0,0,1))&lt;br /&gt;
    faces1 = ((1,0,4), (4,2,1), (4,3,2), (4,0,3), (0,1,2,3))&lt;br /&gt;
    ob1 = createMesh('Solid', origin, verts1, [], faces1)&lt;br /&gt;
    verts2 = ((x,x,0), (y,-z,0), (-z,y,0))&lt;br /&gt;
    edges2 = ((1,0), (1,2), (2,0))&lt;br /&gt;
    ob2 = createMesh('Edgy', origin, verts2, edges2, [])&lt;br /&gt;
&lt;br /&gt;
    # ２つ目のオブジェクトを邪魔にならないように移動&lt;br /&gt;
    ob1.select = False&lt;br /&gt;
    ob2.select = True&lt;br /&gt;
    bpy.ops.transform.translate(value=(0,2,0))&lt;br /&gt;
    return&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    run((0,0,0))&lt;br /&gt;
&amp;lt;/Source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== vertex group と shapekey ==&lt;br /&gt;
このプログラムは２つの vertex group（左右）と４つの shapekey を持つ UV Sphereを追加します。&lt;br /&gt;
[[File:Code_Snippets_ShapeKey.png|640px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
# File shapekey.py&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
import bpy, random&lt;br /&gt;
&lt;br /&gt;
def run(origin):&lt;br /&gt;
    # UV sphere を追加&lt;br /&gt;
    bpy.ops.mesh.primitive_uv_sphere_add(&lt;br /&gt;
        segments=6, ring_count=5, size=1, location=origin)&lt;br /&gt;
    ob = bpy.context.object&lt;br /&gt;
    ob.name = 'ShapeKeyObject'&lt;br /&gt;
    ob.show_name = True&lt;br /&gt;
&lt;br /&gt;
    # 左右の vertex groups を作成&lt;br /&gt;
    left = ob.vertex_groups.new('Left')&lt;br /&gt;
    right = ob.vertex_groups.new('Right')&lt;br /&gt;
    for v in ob.data.vertices:&lt;br /&gt;
        if v.co[0] &amp;gt; 0.001:&lt;br /&gt;
            left.add([v.index], 1.0, 'REPLACE')&lt;br /&gt;
        elif v.co[0] &amp;lt; -0.001:&lt;br /&gt;
            right.add([v.index], 1.0, 'REPLACE')&lt;br /&gt;
        else:&lt;br /&gt;
            left.add([v.index], 0.5, 'REPLACE')&lt;br /&gt;
            right.add([v.index], 0.5, 'REPLACE')&lt;br /&gt;
&lt;br /&gt;
    # Basis key を追加&lt;br /&gt;
    bpy.ops.object.shape_key_add(None)&lt;br /&gt;
    basis = ob.active_shape_key&lt;br /&gt;
&lt;br /&gt;
    # FrontForward key を追加: 前にある頂点を 1unit 前に移動&lt;br /&gt;
    # Slider を -1.0 から +2.0 へ&lt;br /&gt;
    bpy.ops.object.shape_key_add(None)&lt;br /&gt;
    frontFwd = ob.active_shape_key&lt;br /&gt;
    frontFwd.name = 'FrontForward'&lt;br /&gt;
    frontFwd.slider_min = -1.0&lt;br /&gt;
    frontFwd.slider_max = 2.0    &lt;br /&gt;
    for v in [19, 20, 23, 24]:&lt;br /&gt;
        pt = frontFwd.data[v].co&lt;br /&gt;
        pt[1] = pt[1] - 1&lt;br /&gt;
&lt;br /&gt;
    # TopUp keys を追加: 上の頂点を 1unit 上に移動。TopUp_L と&lt;br /&gt;
    # TopUp_R はそれぞれ左右片側だけ影響します&lt;br /&gt;
    keylist = [(None, ''), ('Left', '_L'), ('Right', '_R')]&lt;br /&gt;
    for (vgrp, suffix) in keylist:&lt;br /&gt;
        bpy.ops.object.shape_key_add(None)&lt;br /&gt;
        topUp = ob.active_shape_key&lt;br /&gt;
        topUp.name = 'TopUp' + suffix&lt;br /&gt;
        if vgrp:&lt;br /&gt;
            topUp.vertex_group = vgrp&lt;br /&gt;
        for v in [0, 1, 9, 10, 17, 18, 25]:&lt;br /&gt;
            pt = topUp.data[v].co&lt;br /&gt;
            pt[2] = pt[2] + 1&lt;br /&gt;
&lt;br /&gt;
    # shape key をポージング&lt;br /&gt;
    for shape in ob.data.shape_keys.key_blocks:&lt;br /&gt;
        shape.value = random.random()&lt;br /&gt;
    return&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    # ランダムな shapekey で５つオブジェクトを作成&lt;br /&gt;
    for j in range(5):&lt;br /&gt;
        run((3*j,0,0))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==array modifier の適用==&lt;br /&gt;
このプログラムは 10個の輪を繋いだ鎖を作ります。輪はプリミティブの torus を x軸方向に縮小したものです。輪には、offset を empty で操作する array modifier を与えます。最終的には array modifier を適用して、鎖を１つのメッシュにします。&lt;br /&gt;
&lt;br /&gt;
[[File:Code_Snippets_Chain.png|640px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
# File chain.py&lt;br /&gt;
# Creates an array modifier and applies it&lt;br /&gt;
# Update to API rev. 36523&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
import bpy&lt;br /&gt;
import math&lt;br /&gt;
from math import pi&lt;br /&gt;
&lt;br /&gt;
def run(origin):&lt;br /&gt;
    # シーンに１つ輪を追加&lt;br /&gt;
    bpy.ops.mesh.primitive_torus_add(&lt;br /&gt;
        #major_radius=1, &lt;br /&gt;
        #minor_radius=0.25, &lt;br /&gt;
        major_segments=12, &lt;br /&gt;
        minor_segments=8, &lt;br /&gt;
        use_abso=True, &lt;br /&gt;
        abso_major_rad=1, &lt;br /&gt;
        abso_minor_rad=0.6, &lt;br /&gt;
        location=(0,0,0), &lt;br /&gt;
        rotation=(0,0,0))&lt;br /&gt;
&lt;br /&gt;
    # torus を x軸に沿って縮小&lt;br /&gt;
    ob = bpy.context.object&lt;br /&gt;
    ob.scale = (0.7, 1, 1)&lt;br /&gt;
    bpy.ops.object.transform_apply(scale=True)&lt;br /&gt;
&lt;br /&gt;
    # empty を作成&lt;br /&gt;
    bpy.ops.object.add(&lt;br /&gt;
        type='EMPTY', &lt;br /&gt;
        location=(0,1.2,0.2), &lt;br /&gt;
        rotation=(pi/2, pi/4, pi/2))&lt;br /&gt;
    empty = bpy.context.object&lt;br /&gt;
&lt;br /&gt;
    # 輪を再度アクティブ化&lt;br /&gt;
    scn = bpy.context.scene&lt;br /&gt;
    scn.objects.active = ob&lt;br /&gt;
&lt;br /&gt;
    # modifier を追加&lt;br /&gt;
    mod = ob.modifiers.new('Chain', 'ARRAY')&lt;br /&gt;
    mod.fit_type = 'FIXED_COUNT'&lt;br /&gt;
    mod.count = 10&lt;br /&gt;
    mod.use_relative_offset = 0&lt;br /&gt;
    mod.use_object_offset = True&lt;br /&gt;
    mod.offset_object = empty&lt;br /&gt;
&lt;br /&gt;
    # modifier の適用&lt;br /&gt;
    bpy.ops.object.visual_transform_apply()&lt;br /&gt;
    bpy.ops.object.modifier_apply(apply_as='DATA', modifier='Chain')&lt;br /&gt;
&lt;br /&gt;
    # 鎖を本来の場所へ移動&lt;br /&gt;
    bpy.ops.transform.translate(value=origin)&lt;br /&gt;
&lt;br /&gt;
    # empty はもう不要です&lt;br /&gt;
    scn.objects.unlink(empty)&lt;br /&gt;
    del(empty)&lt;br /&gt;
&lt;br /&gt;
    return&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    run((0,3,0))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Page/Footer|Dev:2.5/Py/Scripts/Cookbook/Code_snippets/Introduction|Dev:2.5/Py/Scripts/Cookbook/Code_snippets/Armatures}}&lt;/div&gt;</summary>
		<author><name>wiki&gt;Blendmild</name></author>
		
	</entry>
</feed>