+1
Under review
HelixVisual3d not updating after created
Hi,
I'm need to show a circular torus on the viewport. The closest option I found was the HelixVisual3D, but it has open ends. So I tried to create my own class to draw this, with a HelixVisual3D and two thin cones to close the ends. I used the classes from the Building Demo as reference, so I came up with this:
public class TorusVisual3D : UIElement3D
{
public static readonly DependencyProperty AngleProperty = DependencyPropertyEx.Register("Angle", 90, (s, e) => s.AppearanceChanged());
public static readonly DependencyProperty RadiusProperty = DependencyPropertyEx.Register("Radius", 0.35, (s, e) => s.AppearanceChanged());
public static readonly DependencyProperty DiameterProperty = DependencyPropertyEx.Register("Diameter", 0.1, (s, e) => s.AppearanceChanged());
private GeometryModel3D torus = new GeometryModel3D();
private GeometryModel3D cap1 = new GeometryModel3D();
private GeometryModel3D cap2 = new GeometryModel3D();
public TorusVisual3D()
{
AppearanceChanged();
Model3DGroup model = new Model3DGroup();
model.Children.Add(this.torus);
model.Children.Add(this.cap1);
model.Children.Add(this.cap2);
this.Visual3DModel = model;
}
public double Angle
{
get
{
return (double)this.GetValue(AngleProperty);
}
set
{
this.SetValue(AngleProperty, value);
}
}
public double Radius
{
get
{
return (double)this.GetValue(RadiusProperty);
}
set
{
this.SetValue(RadiusProperty, value);
}
}
public double Diameter
{
get
{
return (double)this.GetValue(DiameterProperty);
}
set
{
this.SetValue(DiameterProperty, value);
}
}
private void AppearanceChanged()
{
Material mat = MaterialHelper.CreateMaterial(Utils.GetRandomColor());
HelixVisual3D h = new HelixVisual3D();
h.Origin = new Point3D(0, 0, 0);
h.Diameter = Diameter;
h.Turns = Angle / 360.0;
h.Radius = Radius;
h.Length = 0;
h.BackMaterial = mat;
h.Material = mat;
h.UpdateModel();
this.torus = h.Model;
MeshBuilder cap1Builder = new MeshBuilder(false, false);
Point3D p1 = new Point3D(0, Radius, 0);
cap1Builder.AddCone(p1, new Vector3D(0, 1, 0), h.Diameter / 2, h.Diameter / 2, 0.0001, true, true, 40);
this.cap1.Material = MaterialHelper.CreateMaterial(Colors.Yellow);
this.cap1.Geometry = cap1Builder.ToMesh();
MeshBuilder cap2Builder = new MeshBuilder(false, false);
Point3D p2 = new Point3D(-1, 0, 0);
cap2Builder.AddCone(p2, new Vector3D(1, 0, 0), h.Diameter / 2, h.Diameter / 2, 0.0001, true, true, 40);
this.cap2.Material = MaterialHelper.CreateMaterial(Colors.Red);
this.cap2.Geometry = cap2Builder.ToMesh();
}
}
To draw it I'm using the following code:
TorusVisual3D t = new TorusVisual3D();
t.Angle = m_angle;
t.Radius = m_radius1;
t.Diameter = m_radius2 * 2.0;
t.Transform = new TranslateTransform3D(0, 0, 0);
ModelVisual3D model = new ModelVisual3D();
model.Children.Add(t);
var container = new ContainerUIElement3D();
container.Children.Add(model);
viewport.Children.Add(container);
The problem is that the Helix is drawn with the default values (Radius=0.35, Diameter=0.1 and Angle=90) and is never updated again. No matter what values I set on the Properties, it stays the same. The both cylinder are updated correctly, just the Helix isn't.
What am I'm doing wrong?
Thanks in advance,
Rodrigo
I'm need to show a circular torus on the viewport. The closest option I found was the HelixVisual3D, but it has open ends. So I tried to create my own class to draw this, with a HelixVisual3D and two thin cones to close the ends. I used the classes from the Building Demo as reference, so I came up with this:
public class TorusVisual3D : UIElement3D
{
public static readonly DependencyProperty AngleProperty = DependencyPropertyEx.Register("Angle", 90, (s, e) => s.AppearanceChanged());
public static readonly DependencyProperty RadiusProperty = DependencyPropertyEx.Register("Radius", 0.35, (s, e) => s.AppearanceChanged());
public static readonly DependencyProperty DiameterProperty = DependencyPropertyEx.Register("Diameter", 0.1, (s, e) => s.AppearanceChanged());
private GeometryModel3D torus = new GeometryModel3D();
private GeometryModel3D cap1 = new GeometryModel3D();
private GeometryModel3D cap2 = new GeometryModel3D();
public TorusVisual3D()
{
AppearanceChanged();
Model3DGroup model = new Model3DGroup();
model.Children.Add(this.torus);
model.Children.Add(this.cap1);
model.Children.Add(this.cap2);
this.Visual3DModel = model;
}
public double Angle
{
get
{
return (double)this.GetValue(AngleProperty);
}
set
{
this.SetValue(AngleProperty, value);
}
}
public double Radius
{
get
{
return (double)this.GetValue(RadiusProperty);
}
set
{
this.SetValue(RadiusProperty, value);
}
}
public double Diameter
{
get
{
return (double)this.GetValue(DiameterProperty);
}
set
{
this.SetValue(DiameterProperty, value);
}
}
private void AppearanceChanged()
{
Material mat = MaterialHelper.CreateMaterial(Utils.GetRandomColor());
HelixVisual3D h = new HelixVisual3D();
h.Origin = new Point3D(0, 0, 0);
h.Diameter = Diameter;
h.Turns = Angle / 360.0;
h.Radius = Radius;
h.Length = 0;
h.BackMaterial = mat;
h.Material = mat;
h.UpdateModel();
this.torus = h.Model;
MeshBuilder cap1Builder = new MeshBuilder(false, false);
Point3D p1 = new Point3D(0, Radius, 0);
cap1Builder.AddCone(p1, new Vector3D(0, 1, 0), h.Diameter / 2, h.Diameter / 2, 0.0001, true, true, 40);
this.cap1.Material = MaterialHelper.CreateMaterial(Colors.Yellow);
this.cap1.Geometry = cap1Builder.ToMesh();
MeshBuilder cap2Builder = new MeshBuilder(false, false);
Point3D p2 = new Point3D(-1, 0, 0);
cap2Builder.AddCone(p2, new Vector3D(1, 0, 0), h.Diameter / 2, h.Diameter / 2, 0.0001, true, true, 40);
this.cap2.Material = MaterialHelper.CreateMaterial(Colors.Red);
this.cap2.Geometry = cap2Builder.ToMesh();
}
}
To draw it I'm using the following code:
TorusVisual3D t = new TorusVisual3D();
t.Angle = m_angle;
t.Radius = m_radius1;
t.Diameter = m_radius2 * 2.0;
t.Transform = new TranslateTransform3D(0, 0, 0);
ModelVisual3D model = new ModelVisual3D();
model.Children.Add(t);
var container = new ContainerUIElement3D();
container.Children.Add(model);
viewport.Children.Add(container);
The problem is that the Helix is drawn with the default values (Radius=0.35, Diameter=0.1 and Angle=90) and is never updated again. No matter what values I set on the Properties, it stays the same. The both cylinder are updated correctly, just the Helix isn't.
What am I'm doing wrong?
Thanks in advance,
Rodrigo
Customer support service by UserEcho
I have understand your!! stuff previous to and you’re just too magnificent content.
ดูบอลออนไลน์
ดูบอลสดฟรี
เว็บดูบอลสดฟรีบนมือถือ
I love this blog!! The flash up the top is awesome!!
เว็บดูบอลสด
ลิงค์ดูบอลสด
https://61a1dbd7971f4.site123.me/
I gotta most loved this site it appears to be extremely useful.
Slot (สล็อตออนไลน์)
สล็อตออนไลน์ไม่ผ่านเอเย่นต์
slot online เว็บตรง
Yeah bookmaking this wasn’t a bad determination great post!
pg slot
ทางเข้าเว็บสล็อตPG Slot
ทางเข้าเล่นเว็บสล็อตออนไลน์PG Slot
I gotta most loved this site it appears to be extremely useful.
itp slot
ทางเข้าเว็บสล็อตITP Slot
ทางเข้าเว็บสล็อตITP Slotบนมือถือ
I gotta most loved this site it appears to be extremely useful.
Spade Gaming
ทางเข้าเว็บสล็อตSpade Gaming
ทางเข้าเว็บสล็อตSpade Gamingบนมือถือ
I gotta most loved this site it appears to be extremely useful.
Joker Gaming
ทางเข้าเว็บสล็อตJoker Gaming
ทางเข้าเว็บสล็อตJoker Gamingบนมือถือ
Yeah bookmaking this wasn’t a bad determination great post!
ufabetบนมือถือ
สมัครufabetบนมือถือ
สมัครเว็บเดิมพันufabetบนมือถือ
Yeah bookmaking this wasn’t a bad determination great post!
แทงบอลออนไลน์
เว็บพนันบอลไม่ผ่านเอเย่นต์
เดิมพันบอลเว็บตรง
I gotta most loved this site it appears to be extremely useful.
แทงบอลสเต็ป
แทงบอลสเต็ปเว็บไหนดี
สมัครแทงบอลสเต็ปเว็บไหนดี
Yeah bookmaking this wasn’t a bad determination great post!
เล่นบอลตู้
สมัครเล่นบอลตู้
สมัครแทงบอลvirtual sports
I gotta most loved this site it appears to be extremely useful.
เว็บบอลต่างประเทศ
สมัครเว็บพนันบอลต่างประเทศ
สมัครเว็บบอลต่างประเทศออนไลน์
Yeah bookmaking this wasn’t a bad determination great post!
เว็บบอลพรีเมียร์ลีก
สมัครเว็บพนันบอลพรีเมียร์ลีก
สมัครเว็บเดิมพันบอลพรีเมียร์ลีก
Yeah bookmaking this wasn’t a bad determination great post!
ufabetบนมือถือ
สมัครเว็บพนันufabetบนมือถือ
สมัครufabetภาษาไทยบนมือถือ
I gotta most loved this site it appears to be extremely useful.
Slot (สล็อตออนไลน์)
เล่นเกมสล็อตไม่ผ่านเอเย่นต์
ลิงค์ทางเข้าสล็อตออนไลน์เว็บตรง
I gotta most loved this site it appears to be extremely useful.
pg slot
ทางเข้าเว็บสล็อตPG Slotบนมือถือ
ลิงค์ทางเข้าเว็บสล็อตPG Slot Online
This is really interesting, I’ll check out your other posts!
itp slot
ทางเข้าเล่นเว็บเกมสล็อตITP Slot
ทางเข้าเว็บสล็อตITP Slotเว็บตรง
I love this blog!! The flash up the top is awesome!!
เว็บบอลต่างประเทศ
สมัครเว็บบอลต่างประเทศบนมือถือ
สมัครเว็บเดิมพันบอลต่างประเทศ
I love this blog!! The flash up the top is awesome!!
เว็บบอลพรีเมียร์ลีก
สมัครเว็บแทงบอลพรีเมียร์ลีก
สมัครเว็บบอลพรีเมียร์ลีกเว็บไหนดี2021
This is really interesting, I’ll check out your other posts!
ufabetบนมือถือ
สมัครสมาชิกufabetบนมือถือ
ลิงค์สมัครufabetบนมือถือ
This is really interesting, I’ll check out your other posts!
ufabet
เว็บพนันufabetเว็บไหนดี
สมัครเว็บพนันufabetเว็บไหนดี
Yeah bookmaking this wasn’t a bad determination great post!
Slot (สล็อตออนไลน์)
สล็อตออนไลน์ไม่ผ่านเอเย่นต์
slot online เว็บตรง
You seemed to have thought of everything in this topic! I will save your site and come back here real soon to read more informative post from you.
sa gaming
เล่นคาสิโนsa gamingเว็บไหนดี
เล่นคาสิโนสดsa gamingเว็บไหนดี
These are great wise words from the voice of experience and talented person like you! Thank your for sharing all of this and more motivating us.
pg slot
ทางเข้าเว็บสล็อตPG Slot
ทางเข้าเล่นเว็บสล็อตออนไลน์PG Slot
These are great wise words from the voice of experience and talented person like you! Thank your for sharing all of this and more motivating us.
สมัครเอเย่นต์บาคาร่า
สมัครเอเย่นต์บาคาร่าบนมือถือ
สมัครสมาชิกเอเย่นต์บาคาร่าออนไลน์
just wanted to say thank you so much for the inspiration. These information, actually had a great impact on my life!
สมัครเอเย่นต์บาคาร่า
สมัครเอเย่นต์บาคาร่าบนมือถือ
สมัครสมาชิกเอเย่นต์บาคาร่าออนไลน์
just wanted to say thank you so much for the inspiration. These information, actually had a great impact on my life!
Venus Casino
ทางเข้าเล่นคาสิโนvenus casino
ทางเข้าเล่นคาสิโนvenus casinoบนมือถือ
I will encourage my friends to follow your amazing website to read all your extremely useful and valuable blogs.
itp slot
ทางเข้าเว็บสล็อตITP Slot
ทางเข้าเว็บสล็อตITP Slotบนมือถือ
These are great wise words from the voice of experience and talented person like you! Thank your for sharing all of this and more motivating us.
Spade Gaming
ทางเข้าเว็บสล็อตSpade Gaming
ทางเข้าเว็บสล็อตSpade Gamingบนมือถือ
These are great wise words from the voice of experience and talented person like you! Thank your for sharing all of this and more motivating us.
gold diamond gaming
ทางเข้าเล่นคาสิโนgold diamond gaming
ทางเข้าเล่นgdg casino
You seemed to have thought of everything in this topic! I will save your site and come back here real soon to read more informative post from you.
Joker Gaming
ทางเข้าเว็บสล็อตJoker Gaming
ทางเข้าเว็บสล็อตJoker Gamingบนมือถือ
These are great wise words from the voice of experience and talented person like you! Thank your for sharing all of this and more motivating us.
sexy baccara
เล่นคาสิโนsexy baccaratเว็บไหนดี
เล่นคาสิโนsexy baccaratเว็บไหนดีpantip
You seemed to have thought of everything in this topic! I will save your site and come back here real soon to read more informative post from you.
Red Tiger
ทางเข้าเว็บสล็อตRed Tiger
ทางเข้าเว็บสล็อตRed Tigerบนมือถือ
You seemed to have thought of everything in this topic! I will save your site and come back here real soon to read more informative post from you.
Slot (สล็อตออนไลน์)
สล็อตออนไลน์ไม่ผ่านเอเย่นต์
สล็อตออนไลน์ไม่ผ่านเอเย่นต์
I will encourage my friends to follow your amazing website to read all your extremely useful and valuable blogs.
pg slot
ทางเข้าเว็บสล็อตPG Slot
ทางเข้าเล่นเว็บสล็อตออนไลน์PG Slot
These are great wise words from the voice of experience and talented person like you! Thank your for sharing all of this and more motivating us.
เล่นบอลตู้
สมัครเล่นบอลตู้
สมัครแทงบอลvirtual sports
I will encourage my friends to follow your amazing website to read all your extremely useful and valuable blogs.
Spade Gaming
ทางเข้าเว็บสล็อตSpade Gaming
ทางเข้าเว็บสล็อตSpade Gamingบนมือถือ
These are great wise words from the voice of experience and talented person like you! Thank your for sharing all of this and more motivating us.
เว็บบอลพรีเมียร์ลีก
สมัครเว็บบอลพรีเมียร์ลีก
สมัครเว็บบอลพรีเมียร์ลีกเว็บไหนดีpantip
I will encourage my friends to follow your amazing website to read all your extremely useful and valuable blogs.
Red Tiger
ทางเข้าเว็บสล็อตRed Tiger
ทางเข้าเว็บสล็อตRed Tigerบนมือถือ
These are great wise words from the voice of experience and talented person like you! Thank your for sharing all of this and more motivating us.
แทงบอลออนไลน์
เว็บพนันบอลไม่ผ่านเอเย่นต์
เดิมพันบอลเว็บตรง
I should assert barely that its astounding! The blog is informational also always fabricate amazing entitys.
pg slot
ทางเข้าเว็บสล็อตPG Slot
ทางเข้าเล่นเว็บสล็อตออนไลน์PG Slot
Rolled up and read this good article very slow, you will find out that you High.
Venus Casino
ทางเข้าเล่นคาสิโนvenus casino
ทางเข้าเล่นคาสิโนvenus casinoบนมือถือ
So it is interesting and very good written and see what they think about other people.
Spade Gaming
ทางเข้าเล่นเว็บสล็อตออนไลน์Spade Gaming
ทางเข้าเว็บสล็อตSpade Gamingขั้นต่ำ 1 บาท
Rolled up and read this good article very slow, you will find out that you High.
เว็บบอลพรีเมียร์ลีก
สมัครเว็บพนันบอลพรีเมียร์ลีก
สมัครเว็บเดิมพันบอลพรีเมียร์ลีก
Thank you for all the information.Thank you. Your article is written very well.
sexy baccarat
เล่นคาสิโนสดsexy baccaratเว็บไหนดี
เล่นคาสิโนsexy baccaratเว็บไหนดี2021
I should assert barely that its astounding! The blog is informational also always fabricate amazing entitys.
บาคาร่าออนไลน์
เดิมพันบาคาร่าไม่ผ่านเอเย่นต์
สมัครสมาชิกบาคาร่าออนไลน์เว็บตรง
Thank you for all the information.Thank you. Your article is written very well.
sa gaming
เล่นคาสิโนsa gamingเว็บไหนดีpantip
เล่นคาสิโนsa gamingบนมือถือเว็บไหนดี
I should assert barely that its astounding! The blog is informational also always fabricate amazing entitys.
น้ำเต้าปูปลาออนไลน์
ทางเข้าเว็บแทงน้ำเต้าปูปลาบนมือถือ
ทางเข้าเว็บแทงน้ำเต้าปูปลาได้เงินจริง
Thank you for all the information.Thank you. Your article is written very well.
ebet
ทางเข้าเล่นคาสิโนebet gaming
ทางเข้าเล่นคาสิโนebetบนมือถือ
I should assert barely that its astounding! The blog is informational also always fabricate amazing entitys.
กำถั่ว
ทางเข้าเว็บเล่นกำถั่วบนมือถือ
ลิงค์ทางเข้าเว็บเล่นกำถั่ว