this.components = new System.ComponentModel.Container();\r
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SceneWindow));\r
this.gbZoom = new System.Windows.Forms.GroupBox();\r
+ this.comboBox1 = new System.Windows.Forms.ComboBox();\r
this.button_vparam = new System.Windows.Forms.Button();\r
- this.textBox_vparamid = new System.Windows.Forms.TextBox();\r
- this.hScrollBar_weight = new System.Windows.Forms.HScrollBar();\r
+ this.textBox_x = new System.Windows.Forms.TextBox();\r
this.hsLOD = new System.Windows.Forms.HScrollBar();\r
this.hsSpecular = new System.Windows.Forms.HScrollBar();\r
this.hsDiffuse = new System.Windows.Forms.HScrollBar();\r
this.takeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
this.returnToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.textBox_y = new System.Windows.Forms.TextBox();\r
+ this.textBox_z = new System.Windows.Forms.TextBox();\r
this.gbZoom.SuspendLayout();\r
this.ctxObjects.SuspendLayout();\r
this.SuspendLayout();\r
// \r
// gbZoom\r
// \r
+ this.gbZoom.Controls.Add(this.textBox_z);\r
+ this.gbZoom.Controls.Add(this.textBox_y);\r
+ this.gbZoom.Controls.Add(this.comboBox1);\r
this.gbZoom.Controls.Add(this.button_vparam);\r
- this.gbZoom.Controls.Add(this.textBox_vparamid);\r
- this.gbZoom.Controls.Add(this.hScrollBar_weight);\r
+ this.gbZoom.Controls.Add(this.textBox_x);\r
this.gbZoom.Controls.Add(this.hsLOD);\r
this.gbZoom.Controls.Add(this.hsSpecular);\r
this.gbZoom.Controls.Add(this.hsDiffuse);\r
this.gbZoom.Controls.Add(this.cbAA);\r
this.gbZoom.Controls.Add(this.chkWireFrame);\r
this.gbZoom.Dock = System.Windows.Forms.DockStyle.Bottom;\r
- this.gbZoom.Location = new System.Drawing.Point(0, 507);\r
+ this.gbZoom.Location = new System.Drawing.Point(0, 506);\r
this.gbZoom.Name = "gbZoom";\r
this.gbZoom.Size = new System.Drawing.Size(644, 98);\r
this.gbZoom.TabIndex = 8;\r
this.gbZoom.TabStop = false;\r
// \r
+ // comboBox1\r
+ // \r
+ this.comboBox1.FormattingEnabled = true;\r
+ this.comboBox1.Items.AddRange(new object[] {\r
+ "mPelvis",\r
+ "mTorso",\r
+ "mChest",\r
+ "mNeck",\r
+ "mHead",\r
+ "mCollarLeft",\r
+ "mCollarRight",\r
+ "mShoulderLeft",\r
+ "mShoulderRight",\r
+ "mElbowLeft",\r
+ "mElbowRight",\r
+ "mWristRight",\r
+ "mWristLeft",\r
+ "mHipRight",\r
+ "mHipLeft",\r
+ "mKneeRight",\r
+ "mKneeLeft",\r
+ "mAnkleRight",\r
+ "mAnkleLeft",\r
+ "mFootLeft",\r
+ "mFootRight",\r
+ "mToeLeft",\r
+ "mToeRight"});\r
+ this.comboBox1.Location = new System.Drawing.Point(22, 65);\r
+ this.comboBox1.Name = "comboBox1";\r
+ this.comboBox1.Size = new System.Drawing.Size(121, 21);\r
+ this.comboBox1.TabIndex = 28;\r
+ // \r
// button_vparam\r
// \r
- this.button_vparam.Location = new System.Drawing.Point(265, 67);\r
+ this.button_vparam.Location = new System.Drawing.Point(265, 64);\r
this.button_vparam.Name = "button_vparam";\r
this.button_vparam.Size = new System.Drawing.Size(75, 23);\r
this.button_vparam.TabIndex = 27;\r
- this.button_vparam.Text = "button1";\r
+ this.button_vparam.Text = "Apply";\r
this.button_vparam.UseVisualStyleBackColor = true;\r
this.button_vparam.Click += new System.EventHandler(this.button_vparam_Click);\r
// \r
- // textBox_vparamid\r
- // \r
- this.textBox_vparamid.Location = new System.Drawing.Point(211, 67);\r
- this.textBox_vparamid.Name = "textBox_vparamid";\r
- this.textBox_vparamid.Size = new System.Drawing.Size(49, 20);\r
- this.textBox_vparamid.TabIndex = 26;\r
+ // textBox_x\r
// \r
- // hScrollBar_weight\r
- // \r
- this.hScrollBar_weight.Location = new System.Drawing.Point(3, 67);\r
- this.hScrollBar_weight.Name = "hScrollBar_weight";\r
- this.hScrollBar_weight.Size = new System.Drawing.Size(205, 22);\r
- this.hScrollBar_weight.TabIndex = 25;\r
+ this.textBox_x.Location = new System.Drawing.Point(149, 66);\r
+ this.textBox_x.Name = "textBox_x";\r
+ this.textBox_x.Size = new System.Drawing.Size(32, 20);\r
+ this.textBox_x.TabIndex = 26;\r
+ this.textBox_x.Text = "0";\r
+ this.textBox_x.TextChanged += new System.EventHandler(this.textBox_vparamid_TextChanged);\r
// \r
// hsLOD\r
// \r
this.deleteToolStripMenuItem.Text = "Delete";\r
this.deleteToolStripMenuItem.Click += new System.EventHandler(this.deleteToolStripMenuItem_Click);\r
// \r
+ // textBox_y\r
+ // \r
+ this.textBox_y.Location = new System.Drawing.Point(187, 67);\r
+ this.textBox_y.Name = "textBox_y";\r
+ this.textBox_y.Size = new System.Drawing.Size(32, 20);\r
+ this.textBox_y.TabIndex = 29;\r
+ this.textBox_y.Text = "0";\r
+ // \r
+ // textBox_z\r
+ // \r
+ this.textBox_z.Location = new System.Drawing.Point(225, 67);\r
+ this.textBox_z.Name = "textBox_z";\r
+ this.textBox_z.Size = new System.Drawing.Size(32, 20);\r
+ this.textBox_z.TabIndex = 30;\r
+ this.textBox_z.Text = "0";\r
+ // \r
// SceneWindow\r
// \r
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
- this.ClientSize = new System.Drawing.Size(644, 605);\r
+ this.ClientSize = new System.Drawing.Size(644, 604);\r
this.Controls.Add(this.gbZoom);\r
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));\r
this.Name = "SceneWindow";\r
private System.Windows.Forms.HScrollBar hsAmbient;\r
private System.Windows.Forms.HScrollBar hsLOD;\r
private System.Windows.Forms.Button button_vparam;\r
- private System.Windows.Forms.TextBox textBox_vparamid;\r
- private System.Windows.Forms.HScrollBar hScrollBar_weight;\r
+ private System.Windows.Forms.TextBox textBox_x;\r
+ private System.Windows.Forms.ComboBox comboBox1;\r
+ private System.Windows.Forms.TextBox textBox_z;\r
+ private System.Windows.Forms.TextBox textBox_y;\r
\r
}\r
}\r
\r
GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
\r
+ //Mark the joints\r
+\r
+ \r
+ newpos.X += 0.01f;\r
+ newpos.Y += 0.01f;\r
+ newpos.Z += 0.01f;\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+\r
+ newpos.X -= 0.02f;\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+ \r
+ newpos.Y -= 0.02f;\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+\r
+ newpos.X += 0.02f;\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+\r
+ newpos.Y += 0.02f;\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+\r
+ newpos.Z -= 0.02f;\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+\r
+ newpos.Y -= 0.02f;\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+\r
+ newpos.X -= 0.02f;\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+\r
+ newpos.Y += 0.02f;\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+\r
+ newpos.X += 0.02f;\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+\r
+ newpos.Y -= 0.01f;\r
+ newpos.Z += 0.01f;\r
+ newpos.X -= 0.01f;\r
+ GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+\r
+\r
+\r
}\r
+\r
+\r
\r
GL.Color3(0.0, 1.0, 0.0);\r
\r
{\r
//int paramid = int.Parse(textBox_vparamid.Text);\r
//float weight = (float)hScrollBar_weight.Value/100f;\r
- float weight = float.Parse(textBox_vparamid.Text);\r
+ float weightx = float.Parse(textBox_x.Text);\r
+ float weighty = float.Parse(textBox_y.Text);\r
+ float weightz = float.Parse(textBox_z.Text);\r
\r
foreach (RenderAvatar av in Avatars.Values)\r
{\r
//av.glavatar.morphtest(av.avatar,paramid,weight);\r
- av.glavatar.skel.deformbone("mShoulderLeft", new Vector3(0, 0, 0), new Vector3(1, 1, 1), Quaternion.CreateFromEulers((float)(Math.PI * (weight / 180)), 0.0f, 0.0f));\r
+ av.glavatar.skel.deformbone(comboBox1.Text, new Vector3(0, 0, 0), new Vector3(1, 1, 1), Quaternion.CreateFromEulers((float)(Math.PI * (weightx / 180)), (float)(Math.PI * (weighty / 180)), (float)(Math.PI * (weightz / 180))));\r
\r
foreach (GLMesh mesh in av.glavatar._meshes.Values)\r
{\r
}\r
}\r
\r
+ private void textBox_vparamid_TextChanged(object sender, EventArgs e)\r
+ {\r
+\r
+ }\r
+\r
\r
\r
}\r
// ON upper torso 5 and 10 are not used\r
// 4 is neck and 6 and 11 are the left and right collar bones\r
\r
- //the bone rotations are stored with each bone as a SRT 4x4 matrix\r
- //it is suspose to be a case of just mulutiplying the bone chain together\r
+ Vector3 lerp;\r
+\r
+ Vector3 offset;\r
+ Quaternion rot = ba.getRotation();\r
\r
- Matrix4 deform;\r
- Matrix4 ma = ba.getdeform();\r
- \r
if (bb != null)\r
{\r
- Matrix4 mb = bb.getdeform();\r
- deform = Matrix4.Lerp(ma, mb, weight);\r
+ Vector3 oa = ba.getOffset() - ba.getOrigOffset();\r
+ Vector3 ob = bb.getOffset() - bb.getOrigOffset();\r
+ lerp = Vector3.Lerp(oa, ob, weight);\r
+ offset = Vector3.Lerp(ba.getOffset(), bb.getOffset(), weight);\r
}\r
else\r
{\r
- deform = ba.getdeform();\r
+ lerp = ba.getOffset()- ba.getOrigOffset();\r
+ offset = ba.getOffset();\r
+ rot = ba.getRotation();\r
}\r
\r
Vector3 pos = new Vector3(OrigRenderData.Vertices[v], OrigRenderData.Vertices[v + 1], OrigRenderData.Vertices[v + 2]);\r
- pos = pos - (ba.getOffset() - ba.getOrigOffset());\r
- Vector3 newpos = pos * deform;\r
- newpos = newpos + (ba.getOffset()-ba.getOrigOffset());\r
-\r
- RenderData.Vertices[v] = newpos.X;\r
- RenderData.Vertices[v + 1] = newpos.Y;\r
- RenderData.Vertices[v + 2] = newpos.Z;\r
- \r
+ pos = pos + lerp; \r
+ pos = pos - offset;\r
+ pos = pos * rot;\r
+ pos = pos + offset;\r
+ \r
+ RenderData.Vertices[v] = pos.X;\r
+ RenderData.Vertices[v + 1] = pos.Y;\r
+ RenderData.Vertices[v + 2] = pos.Z;\r
}\r
}\r
\r
b.scale = new Vector3(float.Parse(scaleparts[0]), float.Parse(scaleparts[1]), float.Parse(scaleparts[2]));\r
b.orig_scale = new Vector3(b.scale);\r
\r
- float[] deform = Math3D.CreateSRTMatrix(new Vector3(1,1,1), b.rot, new Vector3(0,0,0));\r
+\r
+ float[] deform = Math3D.CreateSRTMatrix(new Vector3(1,1,1), b.rot, b.orig_pos);\r
b.mDeformMatrix = new Matrix4(deform[0], deform[1], deform[2], deform[3], deform[4], deform[5], deform[6], deform[7], deform[8], deform[9], deform[10], deform[11], deform[12], deform[13], deform[14], deform[15]);\r
\r
//TODO piviot\r
\r
public void deformbone(Vector3 pos, Vector3 scale, Quaternion rot)\r
{\r
- float[] deform = Math3D.CreateSRTMatrix(scale, rot, pos);\r
+ float[] deform = Math3D.CreateSRTMatrix(scale, rot, this.orig_pos);\r
mDeformMatrix = new Matrix4(deform[0], deform[1], deform[2], deform[3], deform[4], deform[5], deform[6], deform[7], deform[8], deform[9], deform[10], deform[11], deform[12], deform[13], deform[14], deform[15]);\r
this.pos = Bone.mBones[name].orig_pos + pos;\r
this.scale = Bone.mBones[name].orig_scale * scale;\r
{\r
if (parent != null)\r
{\r
- Quaternion totalrot = getRotation();\r
+ Quaternion totalrot = getParentRot(); // we don't want this joints rotation included\r
Vector3 parento = parent.getOffset();\r
Vector3 mepre = pos * scale;\r
mepre = mepre * totalrot;\r
}\r
}\r
\r
+\r
+ public Quaternion getParentRot()\r
+ {\r
+ Quaternion totalrot = Quaternion.Identity;\r
+\r
+ if (parent != null)\r
+ {\r
+ totalrot = parent.getRotation();\r
+ }\r
+\r
+ return totalrot;\r
+\r
+ }\r
+\r
public Quaternion getRotation()\r
{\r
Quaternion totalrot = rot;\r
string[] rotparts = data.Split(' ');\r
return Quaternion.CreateFromEulers((float)(float.Parse(rotparts[0]) * Math.PI / 180f), (float)(float.Parse(rotparts[1]) * Math.PI / 180f), (float)(float.Parse(rotparts[2]) * Math.PI / 180f));\r
}\r
-\r
- }\r
-\r
- class Tests\r
- {\r
- static public void runtest()\r
- {\r
- Vector3 i = new Vector3(1, 1, 1);\r
- Vector3 o;\r
- float[] deform = Math3D.CreateSRTMatrix(new Vector3(1, 1, 1), Quaternion.Identity, new Vector3(0, 0, 0));\r
- Matrix4 mDeformMatrix = new Matrix4(deform[0], deform[1], deform[2], deform[3], deform[4], deform[5], deform[6], deform[7], deform[8], deform[9], deform[10], deform[11], deform[12], deform[13], deform[14], deform[15]);\r
- o = i * mDeformMatrix;\r
-\r
- Console.WriteLine(String.Format("Input {0}, output {1}",i,o));\r
-\r
- if (i != new Vector3(1, 1, 1))\r
- throw (new Exception("Test failed"));\r
-\r
- // End of test\r
-\r
- i = new Vector3(0, 10, 0);\r
-\r
- deform = Math3D.CreateSRTMatrix(new Vector3(1, 1, 1), Quaternion.CreateFromEulers(0,0,(float)(Math.PI*90.0f/180.0f)), new Vector3(0, 0, 0));\r
- mDeformMatrix = new Matrix4(deform[0], deform[1], deform[2], deform[3], deform[4], deform[5], deform[6], deform[7], deform[8], deform[9], deform[10], deform[11], deform[12], deform[13], deform[14], deform[15]);\r
- o = i * mDeformMatrix;\r
- Console.WriteLine(String.Format("Input {0}, output {1}",i,o));\r
-\r
-\r
- deform = Math3D.CreateSRTMatrix(new Vector3(1, 1, 1), Quaternion.CreateFromEulers(0, 0, (float)(Math.PI * 90.0f / 180.0f)), new Vector3(0, 0, 0));\r
- mDeformMatrix = new Matrix4(deform[0], deform[4], deform[8], deform[12], deform[1], deform[5], deform[9], deform[13], deform[2], deform[6], deform[10], deform[14], deform[3], deform[7], deform[11], deform[15]);\r
- o = i * mDeformMatrix;\r
- Console.WriteLine(String.Format("Input {0}, output {1}",i,o));\r
-\r
- deform = Math3D.CreateSRTMatrix(new Vector3(1, 1, 1), Quaternion.Identity, new Vector3(20, 0, 0));\r
-// mDeformMatrix = new Matrix4(deform[0], deform[4], deform[8], deform[12], deform[1], deform[5], deform[9], deform[13], deform[2], deform[6], deform[10], deform[14], deform[3], deform[7], deform[11], deform[15]);\r
- mDeformMatrix = new Matrix4(deform[0], deform[1], deform[2], deform[3], deform[4], deform[5], deform[6], deform[7], deform[8], deform[9], deform[10], deform[11], deform[12], deform[13], deform[14], deform[15]);\r
-\r
- Matrix4 mDeformMatrix2 = new Matrix4(deform[0], deform[1], deform[2], deform[3], deform[4], deform[5], deform[6], deform[7], deform[8], deform[9], deform[10], deform[11], deform[12], deform[13], deform[14], deform[15]);\r
-\r
-\r
- Matrix4 xx = mDeformMatrix2 * mDeformMatrix;\r
- Console.WriteLine(String.Format("Input {0}, output {1}", i, o));\r
-\r
- }\r
-\r
-\r
}\r
-\r
-\r
}\r