﻿<?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%3ARef%2FRequests%2FSubDivImprovements</id>
	<title>Dev:Ref/Requests/SubDivImprovements - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3ARef%2FRequests%2FSubDivImprovements"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Ref/Requests/SubDivImprovements&amp;action=history"/>
	<updated>2026-06-02T14:47:30Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:Ref/Requests/SubDivImprovements&amp;diff=42560&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Ref/Requests/SubDivImprovements&amp;diff=42560&amp;oldid=prev"/>
		<updated>2018-06-28T17:45:36Z</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日 (木) 17:45時点における版&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:Ref/Requests/SubDivImprovements&amp;diff=42559&amp;oldid=prev</id>
		<title>2010年4月3日 (土) 10:23にwiki&gt;Terrywallworkによる</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Ref/Requests/SubDivImprovements&amp;diff=42559&amp;oldid=prev"/>
		<updated>2010-04-03T10:23:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Adding a more controlled subdiv.==&lt;br /&gt;
&lt;br /&gt;
Basic subdiv still means tons of editing and fractal subdiv is very&lt;br /&gt;
random.  The basic idea here is to create a subdiv menu that allows&lt;br /&gt;
very good control over what and how it will be subdivided.  I think&lt;br /&gt;
this will be most useful for natural formations (rocks, cliffs, etc.)&lt;br /&gt;
because you will be better able to control how the object is formed&lt;br /&gt;
but still have enough randomness to make it effective.  The basic&lt;br /&gt;
idea is to create a way to manipulate x, y and z planes&lt;br /&gt;
independantly.&lt;br /&gt;
&lt;br /&gt;
Edits needed to create this...&lt;br /&gt;
&lt;br /&gt;
Anything I am not sure what needs to be done is in ***** Stuff *****&lt;br /&gt;
&lt;br /&gt;
This section shows what I think will need to be changed.  I am not&lt;br /&gt;
very sure on the UI stuff or if/how any of the changes must take&lt;br /&gt;
place.  Allowing others to suggest the best way to implement this is&lt;br /&gt;
my best idea right now.&lt;br /&gt;
&lt;br /&gt;
I believe most of this is actually worked out.  I was also wondering&lt;br /&gt;
if the FULL switch should be added, to force the selected points to&lt;br /&gt;
be raised or lowered at the full amount.  I am not sure if this&lt;br /&gt;
would be useful, since it seems except perhaps in amking some sort&lt;br /&gt;
of grating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking for comments, suggestions and someone to help with the UI and&lt;br /&gt;
finish the coding for this.&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
buttons_editing.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void do_meshbuts(unsigned short event)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
current&lt;br /&gt;
===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
float fac;&lt;br /&gt;
short randfac;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===&lt;br /&gt;
new&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
float fac, fax, fay, faz;&lt;br /&gt;
short randfac, randfax, randfay, randfaz;&lt;br /&gt;
&lt;br /&gt;
case B_CONTROLSUBDIV:&lt;br /&gt;
randfax = 10;&lt;br /&gt;
randfay = 10;&lt;br /&gt;
randfaz = 10;&lt;br /&gt;
***** Menu Check *****&lt;br /&gt;
waitcursor(1);&lt;br /&gt;
fax = -((float)randfax ) / 100;&lt;br /&gt;
fay = -((float)randfay ) / 100;&lt;br /&gt;
faz = -((float)randfaz ) / 100;&lt;br /&gt;
***** subdivideflag handling *****&lt;br /&gt;
countall();&lt;br /&gt;
waitcursor(0);&lt;br /&gt;
allqueue(REDRAWVIEW3D, 0);&lt;br /&gt;
BIF_undo_push(&amp;quot;Controlled Subdivide&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static void editing_panel_mesh_tools(Object *ob, Mesh *me)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&lt;br /&gt;
new&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
uiDefBut(block, BUT,B_CONTROLSUBDIV, &amp;quot;Ctrld Subd&amp;quot;,	170,195,85,19, 0, 0, 0, 0, 0, &amp;quot;Subdivides selected faces with a controlled factor&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
***** Not sure on the changes here, just copied fracsub line *****&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
editobject.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void special_editmenu(void)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
current&lt;br /&gt;
===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
else if(G.obedit-&amp;gt;type==OB_MESH) {&lt;br /&gt;
&lt;br /&gt;
nr= pupmenu(&amp;quot;Specials%t|Subdivide%x1|&lt;br /&gt;
Subdivide Fractal%x2|Subdivide Smooth%x3|&lt;br /&gt;
Merge%x4|Remove Doubles%x5|Hide%x6|Reveal%x7|&lt;br /&gt;
Select Swap%x8|Flip Normals %x9|Smooth %x10|Bevel %x11&amp;quot;);&lt;br /&gt;
if(nr&amp;gt;0) waitcursor(1);&lt;br /&gt;
&lt;br /&gt;
switch(nr) {&lt;br /&gt;
case 1:&lt;br /&gt;
subdivideflag(1, 0.0, editbutflag);&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 2:&lt;br /&gt;
randfac= 10;&lt;br /&gt;
if(button(&amp;amp;randfac, 1, 100, &amp;quot;Rand fac:&amp;quot;)==0) return;&lt;br /&gt;
fac= -( (float)randfac )/100;&lt;br /&gt;
subdivideflag(1, fac, editbutflag);&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide Fractal&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 3:&lt;br /&gt;
subdivideflag(1, 0.0, editbutflag | B_SMOOTH);&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide Smooth&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 4:&lt;br /&gt;
mergemenu();&lt;br /&gt;
break;&lt;br /&gt;
case 5:&lt;br /&gt;
notice(&amp;quot;Removed %d Vertices&amp;quot;, removedoublesflag(1, doublimit));&lt;br /&gt;
BIF_undo_push(&amp;quot;Remove Doubles&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 6:&lt;br /&gt;
hide_mesh(0);&lt;br /&gt;
break;&lt;br /&gt;
case 7:&lt;br /&gt;
reveal_mesh();&lt;br /&gt;
break;&lt;br /&gt;
case 8:&lt;br /&gt;
selectswap_mesh();&lt;br /&gt;
break;&lt;br /&gt;
case 9:&lt;br /&gt;
flip_editnormals();&lt;br /&gt;
BIF_undo_push(&amp;quot;Flip Normals&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 10:&lt;br /&gt;
vertexsmooth();&lt;br /&gt;
break;&lt;br /&gt;
case 11:&lt;br /&gt;
bevel_menu();&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
makeDispList(G.obedit);&lt;br /&gt;
&lt;br /&gt;
if(nr&amp;gt;0) waitcursor(0);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&lt;br /&gt;
new&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
else if(G.obedit-&amp;gt;type==OB_MESH) {&lt;br /&gt;
&lt;br /&gt;
nr= pupmenu(&amp;quot;Specials%t|Subdivide%x1|&lt;br /&gt;
Subdivide Fractal%x2|Subdivide Controlled%x3|&lt;br /&gt;
Subdivide Smooth%x4|Merge%x5|Remove Doubles%x6|&lt;br /&gt;
Hide%x7|Reveal%x8|Select Swap%x9|&lt;br /&gt;
Flip Normals %x10|Smooth %x11|Bevel %x12&amp;quot;);&lt;br /&gt;
if(nr&amp;gt;0) waitcursor(1);&lt;br /&gt;
&lt;br /&gt;
switch(nr) {&lt;br /&gt;
case 1:&lt;br /&gt;
subdivideflag(1, 0.0, editbutflag);&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 2:&lt;br /&gt;
randfac= 10;&lt;br /&gt;
if(button(&amp;amp;randfac, 1, 100, &amp;quot;Rand fac:&amp;quot;)==0) return;&lt;br /&gt;
fac= -( (float)randfac )/100;&lt;br /&gt;
subdivideflag(1, fac, editbutflag);&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide Fractal&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 3:&lt;br /&gt;
***** subdivideflag handling *****&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide Controlled&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 4:&lt;br /&gt;
subdivideflag(1, 0.0, editbutflag | B_SMOOTH);&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide Smooth&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 5:&lt;br /&gt;
mergemenu();&lt;br /&gt;
break;&lt;br /&gt;
case 6:&lt;br /&gt;
notice(&amp;quot;Removed %d Vertices&amp;quot;, removedoublesflag(1, doublimit));&lt;br /&gt;
BIF_undo_push(&amp;quot;Remove Doubles&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 7:&lt;br /&gt;
hide_mesh(0);&lt;br /&gt;
break;&lt;br /&gt;
case 8:&lt;br /&gt;
reveal_mesh();&lt;br /&gt;
break;&lt;br /&gt;
case 9:&lt;br /&gt;
selectswap_mesh();&lt;br /&gt;
break;&lt;br /&gt;
case 10:&lt;br /&gt;
flip_editnormals();&lt;br /&gt;
BIF_undo_push(&amp;quot;Flip Normals&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 11:&lt;br /&gt;
vertexsmooth();&lt;br /&gt;
break;&lt;br /&gt;
case 12:&lt;br /&gt;
bevel_menu();&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
makeDispList(G.obedit);&lt;br /&gt;
&lt;br /&gt;
if(nr&amp;gt;0) waitcursor(0);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
header_view3d.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void do_view3d_edit_mesh_edgesmenu(void *arg, int event)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
current&lt;br /&gt;
===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
extern short editbutflag;&lt;br /&gt;
float fac;&lt;br /&gt;
short randfac;&lt;br /&gt;
&lt;br /&gt;
switch(event) {&lt;br /&gt;
&lt;br /&gt;
case 0: /* subdivide smooth */&lt;br /&gt;
subdivideflag(1, 0.0, editbutflag | B_SMOOTH);&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide Smooth&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 1: /*subdivide fractal */&lt;br /&gt;
randfac= 10;&lt;br /&gt;
if(button(&amp;amp;randfac, 1, 100, &amp;quot;Rand fac:&amp;quot;)==0) return;&lt;br /&gt;
fac= -( (float)randfac )/100;&lt;br /&gt;
subdivideflag(1, fac, editbutflag);&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide Fractal&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 2: /* subdivide */&lt;br /&gt;
subdivideflag(1, 0.0, editbutflag);&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 3: /* knife subdivide */&lt;br /&gt;
KnifeSubdivide(KNIFE_PROMPT);&lt;br /&gt;
break;&lt;br /&gt;
case 4: /* Loop subdivide */&lt;br /&gt;
loopoperations(LOOP_CUT);&lt;br /&gt;
break;&lt;br /&gt;
case 5: /* Make Edge/Face */&lt;br /&gt;
addedgeface_mesh();&lt;br /&gt;
break;&lt;br /&gt;
case 6:&lt;br /&gt;
bevel_menu();&lt;br /&gt;
break;&lt;br /&gt;
case 7: /* Mark Seam */&lt;br /&gt;
editmesh_mark_seam(0);&lt;br /&gt;
break;&lt;br /&gt;
case 8: /* Clear Seam */&lt;br /&gt;
editmesh_mark_seam(1);&lt;br /&gt;
break;&lt;br /&gt;
case 9: /* Cease SubSurf */&lt;br /&gt;
transform('e');&lt;br /&gt;
break;&lt;br /&gt;
case 10: /* Rotate Edges */&lt;br /&gt;
edge_rotate_selected();&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
allqueue(REDRAWVIEW3D, 0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&lt;br /&gt;
new&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
extern short editbutflag;&lt;br /&gt;
float fac, fax, fay, faz;&lt;br /&gt;
short randfac, randfax, randfay, randfaz;&lt;br /&gt;
&lt;br /&gt;
switch(event) {&lt;br /&gt;
&lt;br /&gt;
case 0: /* subdivide smooth */&lt;br /&gt;
subdivideflag(1, 0.0, editbutflag | B_SMOOTH);&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide Smooth&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 1: /*subdivide fractal */&lt;br /&gt;
randfac= 10;&lt;br /&gt;
if(button(&amp;amp;randfac, 1, 100, &amp;quot;Rand fac:&amp;quot;)==0) return;&lt;br /&gt;
fac= -( (float)randfac )/100;&lt;br /&gt;
subdivideflag(1, fac, editbutflag);&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide Fractal&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 2: /*  controlled subdivide  */&lt;br /&gt;
randfax = 10;&lt;br /&gt;
randfay = 10;&lt;br /&gt;
randfaz = 10;&lt;br /&gt;
***** Menu Check *****&lt;br /&gt;
waitcursor(1);&lt;br /&gt;
fax = -((float)randfax ) / 100;&lt;br /&gt;
fay = -((float)randfay ) / 100;&lt;br /&gt;
faz = -((float)randfaz ) / 100;&lt;br /&gt;
***** subdivideflag handling *****&lt;br /&gt;
countall();&lt;br /&gt;
waitcursor(0);&lt;br /&gt;
allqueue(REDRAWVIEW3D, 0);&lt;br /&gt;
BIF_undo_push(&amp;quot;Controlled Subdivide&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 3: /* subdivide */&lt;br /&gt;
subdivideflag(1, 0.0, editbutflag);&lt;br /&gt;
BIF_undo_push(&amp;quot;Subdivide&amp;quot;);&lt;br /&gt;
break;&lt;br /&gt;
case 4: /* knife subdivide */&lt;br /&gt;
KnifeSubdivide(KNIFE_PROMPT);&lt;br /&gt;
break;&lt;br /&gt;
case 5: /* Loop subdivide */&lt;br /&gt;
loopoperations(LOOP_CUT);&lt;br /&gt;
break;&lt;br /&gt;
case 6: /* Make Edge/Face */&lt;br /&gt;
addedgeface_mesh();&lt;br /&gt;
break;&lt;br /&gt;
case 7:&lt;br /&gt;
bevel_menu();&lt;br /&gt;
break;&lt;br /&gt;
case 8: /* Mark Seam */&lt;br /&gt;
editmesh_mark_seam(0);&lt;br /&gt;
break;&lt;br /&gt;
case 9: /* Clear Seam */&lt;br /&gt;
editmesh_mark_seam(1);&lt;br /&gt;
break;&lt;br /&gt;
case 10: /* Cease SubSurf */&lt;br /&gt;
transform('e');&lt;br /&gt;
break;&lt;br /&gt;
case 11: /* Rotate Edges */&lt;br /&gt;
edge_rotate_selected();&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
allqueue(REDRAWVIEW3D, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
static uiBlock *view3d_edit_mesh_edgesmenu(void *arg_unused)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
current&lt;br /&gt;
===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, &amp;quot;Subdivide|W, 1&amp;quot;,			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, &amp;quot;&amp;quot;);&lt;br /&gt;
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, &amp;quot;Subdivide Fractal|W, 2&amp;quot;,			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, &amp;quot;&amp;quot;);&lt;br /&gt;
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, &amp;quot;Subdivide Smooth|W, 3&amp;quot;,			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, &amp;quot;&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&lt;br /&gt;
new&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, &amp;quot;Subdivide|W, 1&amp;quot;,			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, &amp;quot;&amp;quot;);&lt;br /&gt;
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, &amp;quot;Subdivide Fractal|W, 2&amp;quot;,			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, &amp;quot;&amp;quot;);&lt;br /&gt;
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, &amp;quot;Subdivide Controlled|W, 3&amp;quot;,			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, &amp;quot;&amp;quot;);&lt;br /&gt;
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, &amp;quot;Subdivide Smooth|W, 4&amp;quot;,			0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, &amp;quot;&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
toolbox.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
static TBitem tb_mesh_edit_edge[]=&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
current&lt;br /&gt;
===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
{	0, &amp;quot;Subdivide|W, 1&amp;quot;,			 2,		 NULL},&lt;br /&gt;
{	0, &amp;quot;Subdivide Fractal|W, 2&amp;quot;,	 1,		 NULL},&lt;br /&gt;
{	0, &amp;quot;Subdivide Smooth|W, 3&amp;quot;,		 0,		 NULL},&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&lt;br /&gt;
new&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
{	0, &amp;quot;Subdivide|W, 1&amp;quot;,			 2,		 NULL},&lt;br /&gt;
{	0, &amp;quot;Subdivide Fractal|W, 2&amp;quot;,	 1,		 NULL},&lt;br /&gt;
{	0, &amp;quot;Subdivide Controlled|W, 3&amp;quot;,	 1,		 NULL},&lt;br /&gt;
{	0, &amp;quot;Subdivide Smooth|W, 4&amp;quot;,		 0,		 NULL},&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The subdivide code is the other place of modification, however the&lt;br /&gt;
modifications to that must be done at the end, once you understand how&lt;br /&gt;
the implementation would work should this be added.&lt;br /&gt;
&lt;br /&gt;
Controlled subdivide would call for a menu rather than just a single&lt;br /&gt;
modification factor.  The layout is below, and each [] set is a button&lt;br /&gt;
or slider needer to get the settings // default settings...&lt;br /&gt;
&lt;br /&gt;
| X : | + || - || full || 10-100 |  //  X : | Yes || Yes || No || 10 | |&lt;br /&gt;
| Y : | + || - || full || 10-100 |  //  Y : | Yes || Yes || No || 10 | |&lt;br /&gt;
| Z : | + || - || full || 10-100 |  //  Z : | Yes || Yes || No || 10 | |&lt;br /&gt;
| OK |									 //  | No |&lt;br /&gt;
&lt;br /&gt;
This allows you to make manipulations to any texture in one or more&lt;br /&gt;
directions and even control if it is just a positive bumping or a&lt;br /&gt;
positive and negative adjustment.&lt;br /&gt;
&lt;br /&gt;
Six new flags would be needed to cover x,y, and z&lt;br /&gt;
XPLUS, XMINUS, YPLUS, YMINUS, ZPLUS, ZMINUS&lt;br /&gt;
&lt;br /&gt;
If the Full setting was used XFULL, YFULL and ZFULL would&lt;br /&gt;
be needed too.&lt;br /&gt;
&lt;br /&gt;
These would also have to be transferred to the subdiv code.&lt;br /&gt;
&lt;br /&gt;
Which brings up the subdiv code....&lt;br /&gt;
&lt;br /&gt;
current&lt;br /&gt;
===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void subdivideflag(int flag, float rad, int beauty)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new&lt;br /&gt;
===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void subdivideflag(int flag, float rad, int beauty, int controlled, float radx, float rady, float radz)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
current&lt;br /&gt;
===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
/* make new normal and put in edge, clear flag! needed for face creation part below */&lt;br /&gt;
eed= em-&amp;gt;edges.first;&lt;br /&gt;
while(eed) {&lt;br /&gt;
if(eed-&amp;gt;f2 &amp;amp; flag) {&lt;br /&gt;
/* for now */&lt;br /&gt;
eed-&amp;gt;h &amp;amp;= ~EM_FGON;&lt;br /&gt;
&lt;br /&gt;
/* Subdivide percentage is stored in 1/32768ths in eed-&amp;gt;f1 */&lt;br /&gt;
if (beauty &amp;amp; B_PERCENTSUBD) percent=(float)(eed-&amp;gt;f1)/32768.0;&lt;br /&gt;
else percent=0.5;&lt;br /&gt;
&lt;br /&gt;
vec[0]= (1-percent)*eed-&amp;gt;v1-&amp;gt;co[0] + percent*eed-&amp;gt;v2-&amp;gt;co[0];&lt;br /&gt;
vec[1]= (1-percent)*eed-&amp;gt;v1-&amp;gt;co[1] + percent*eed-&amp;gt;v2-&amp;gt;co[1];&lt;br /&gt;
vec[2]= (1-percent)*eed-&amp;gt;v1-&amp;gt;co[2] + percent*eed-&amp;gt;v2-&amp;gt;co[2];&lt;br /&gt;
&lt;br /&gt;
if(rad &amp;gt; 0.0) {	/* subdivide sphere */&lt;br /&gt;
Normalise(vec);&lt;br /&gt;
vec[0]*= rad;&lt;br /&gt;
vec[1]*= rad;&lt;br /&gt;
vec[2]*= rad;&lt;br /&gt;
}&lt;br /&gt;
else if(rad&amp;lt; 0.0) {  /* fractal subdivide */&lt;br /&gt;
fac= rad* VecLenf(eed-&amp;gt;v1-&amp;gt;co, eed-&amp;gt;v2-&amp;gt;co);&lt;br /&gt;
vec1[0]= fac*(0.5-BLI_drand());&lt;br /&gt;
vec1[1]= fac*(0.5-BLI_drand());&lt;br /&gt;
vec1[2]= fac*(0.5-BLI_drand());&lt;br /&gt;
VecAddf(vec, vec, vec1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if(beauty &amp;amp; B_SMOOTH) {&lt;br /&gt;
smooth_subdiv_vec(eed-&amp;gt;v1-&amp;gt;co, eed-&amp;gt;v2-&amp;gt;co, eed-&amp;gt;v1-&amp;gt;no, eed-&amp;gt;v2-&amp;gt;no, vec1);&lt;br /&gt;
VecAddf(vec, vec, vec1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
eed-&amp;gt;vn= addvertlist(vec);&lt;br /&gt;
eed-&amp;gt;vn-&amp;gt;f= eed-&amp;gt;v1-&amp;gt;f;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
else eed-&amp;gt;vn= 0;&lt;br /&gt;
&lt;br /&gt;
eed-&amp;gt;f2= 0; /* needed! */&lt;br /&gt;
&lt;br /&gt;
eed= eed-&amp;gt;next;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&lt;br /&gt;
new&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
/* make new normal and put in edge, clear flag! needed for face creation part below */&lt;br /&gt;
eed= em-&amp;gt;edges.first;&lt;br /&gt;
while(eed) {&lt;br /&gt;
if(eed-&amp;gt;f2 &amp;amp; flag) {&lt;br /&gt;
/* for now */&lt;br /&gt;
eed-&amp;gt;h &amp;amp;= ~EM_FGON;&lt;br /&gt;
&lt;br /&gt;
/* Subdivide percentage is stored in 1/32768ths in eed-&amp;gt;f1 */&lt;br /&gt;
if (beauty &amp;amp; B_PERCENTSUBD) percent=(float)(eed-&amp;gt;f1)/32768.0;&lt;br /&gt;
else percent=0.5;&lt;br /&gt;
&lt;br /&gt;
vec[0]= (1-percent)*eed-&amp;gt;v1-&amp;gt;co[0] + percent*eed-&amp;gt;v2-&amp;gt;co[0];&lt;br /&gt;
vec[1]= (1-percent)*eed-&amp;gt;v1-&amp;gt;co[1] + percent*eed-&amp;gt;v2-&amp;gt;co[1];&lt;br /&gt;
vec[2]= (1-percent)*eed-&amp;gt;v1-&amp;gt;co[2] + percent*eed-&amp;gt;v2-&amp;gt;co[2];&lt;br /&gt;
&lt;br /&gt;
if(rad &amp;gt; 0.0) {	/* subdivide sphere */&lt;br /&gt;
Normalise(vec);&lt;br /&gt;
vec[0]*= rad;&lt;br /&gt;
vec[1]*= rad;&lt;br /&gt;
vec[2]*= rad;&lt;br /&gt;
}&lt;br /&gt;
else if(rad&amp;lt; 0.0) {  /* fractal subdivide */&lt;br /&gt;
fac= rad* VecLenf(eed-&amp;gt;v1-&amp;gt;co, eed-&amp;gt;v2-&amp;gt;co);&lt;br /&gt;
vec1[0]= fac*(0.5-BLI_drand());&lt;br /&gt;
vec1[1]= fac*(0.5-BLI_drand());&lt;br /&gt;
vec1[2]= fac*(0.5-BLI_drand());&lt;br /&gt;
VecAddf(vec, vec, vec1);&lt;br /&gt;
}&lt;br /&gt;
else if(rad == 0.0) { /* controlled subdiv */&lt;br /&gt;
/*****  Here's where the flags come in	*****/&lt;br /&gt;
/*  X Check  */&lt;br /&gt;
fac= radx* VecLenf(eed-&amp;gt;v1-&amp;gt;co, eed-&amp;gt;v2-&amp;gt;co);&lt;br /&gt;
mod= (0.5-BLI_drand());&lt;br /&gt;
&lt;br /&gt;
if ((controlled &amp;amp; SD_XPLUS) &amp;amp;&amp;amp; mod &amp;gt; 0.0) {&lt;br /&gt;
vec1[0]= fac*mod;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
if ((controlled &amp;amp; SD_XMINUS) &amp;amp;&amp;amp; mod &amp;lt; 0.0) {&lt;br /&gt;
vec1[0]= fac*mod;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
vec1[0]= fac;&lt;br /&gt;
&lt;br /&gt;
/*  Y Check  */&lt;br /&gt;
fac= rady* VecLenf(eed-&amp;gt;v1-&amp;gt;co, eed-&amp;gt;v2-&amp;gt;co);&lt;br /&gt;
mod= (0.5-BLI_drand());&lt;br /&gt;
&lt;br /&gt;
if ((controlled &amp;amp; SD_YPLUS) &amp;amp;&amp;amp; mod &amp;gt; 0.0) {&lt;br /&gt;
vec1[1]= fac*mod;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
if ((controlled &amp;amp; SD_YMINUS) &amp;amp;&amp;amp; mod &amp;lt; 0.0) {&lt;br /&gt;
vec1[1]= fac*mod;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
vec1[1]= fac;&lt;br /&gt;
&lt;br /&gt;
/*  Z Check  */&lt;br /&gt;
fac= radz* VecLenf(eed-&amp;gt;v1-&amp;gt;co, eed-&amp;gt;v2-&amp;gt;co);&lt;br /&gt;
mod= (0.5-BLI_drand());&lt;br /&gt;
&lt;br /&gt;
if ((controlled &amp;amp; SD_ZPLUS) &amp;amp;&amp;amp; mod &amp;gt; 0.0) {&lt;br /&gt;
vec1[2]= fac*mod;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
if ((controlled &amp;amp; SD_ZMINUS) &amp;amp;&amp;amp; mod &amp;lt; 0.0) {&lt;br /&gt;
vec1[2]= fac*mod;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
vec1[2]= fac;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if(beauty &amp;amp; B_SMOOTH) {&lt;br /&gt;
smooth_subdiv_vec(eed-&amp;gt;v1-&amp;gt;co, eed-&amp;gt;v2-&amp;gt;co, eed-&amp;gt;v1-&amp;gt;no, eed-&amp;gt;v2-&amp;gt;no, vec1);&lt;br /&gt;
VecAddf(vec, vec, vec1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
eed-&amp;gt;vn= addvertlist(vec);&lt;br /&gt;
eed-&amp;gt;vn-&amp;gt;f= eed-&amp;gt;v1-&amp;gt;f;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
else eed-&amp;gt;vn= 0;&lt;br /&gt;
&lt;br /&gt;
eed-&amp;gt;f2= 0; /* needed! */&lt;br /&gt;
&lt;br /&gt;
eed= eed-&amp;gt;next;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- %MAINWEB%.KennethStrom - 27 Oct 2004&lt;br /&gt;
&lt;br /&gt;
Chopped the long menu lines, so the page fits better - don't forget to make them in one line when copy&amp;amp;amp;pasting this into your own code...&lt;br /&gt;
-- %MAINWEB%.NathanLetwory - 27 Oct 2004&lt;br /&gt;
&lt;br /&gt;
[[Category:Script]]&lt;/div&gt;</summary>
		<author><name>wiki&gt;Terrywallwork</name></author>
		
	</entry>
</feed>