我创建了一个模型(立方体)并将其添加到我的视口中,它可以正常工作而没有任何问题。
this.mainViewport.Children.Add(模型);
每当我使用下面的代码时,立方体变成黑色而不是它的原始颜色。
this.mainViewport.Children.Clear(); this.mainViewport.Children.Add(模型);
我需要清除视口,因为我在下一秒将立方体添加到另一个位置。任何解决该问题的建议都将受到高度赞赏。
答案 0 :(得分:0)
我会这样做: 首次在其开始位置创建多维数据集:
ModelVisual3D model = new ModelVisual3D();
model.Content = cube;
然后在计时器中我会用新位置改变变换:
model.Transform = new TranslateTransform3D(X, Y, Z); // model need to be a field in your class
其他可用的转换是:
ScaleTransform3D
RotateTransform3D
MatrixTransform3D
- 醇>
Transform3DGroup
答案 1 :(得分:0)
我知道这是一个老问题,但正确答案可能对某人有所帮助。立方体变黑,因为this.mainViewportChildren.Clear()
删除光源(任何一个),使立方体获得原始颜色,你必须添加到你的代码,如:
this.mainViewport.Children.Add(new ModelVisual3D() { Content = new AmbientLight(Colors.White) });
答案 2 :(得分:0)
//if you use ScreenSpaceLines3D
for (int i = _mainViewport.Children.Count - 1; i >= 0; i--)
{
ModelVisual3D modelVisual3D = ModelVisual3D)_mainViewport.Children[i];
if (modelVisual3D is ScreenSpaceLines3D)
{
ScreenSpaceLines3D line3D = ScreenSpaceLines3D)_mainViewport.Children[i];
line3D.Points.Clear();
continue;
}
if (modelVisual3D.Content is DirectionalLight == false)
{
mainViewport.Children.Remove(modelVisual3D);
}
}