代码之家  ›  专栏  ›  技术社区  ›  Overdose

WPF 3D渐变笔刷问题

  •  1
  • Overdose  · 技术社区  · 17 年前

    <Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="215" Width="336">
    <Grid Height="146" Width="232">
        <Viewport3D Name="myViewPort" ClipToBounds="False">
            <Viewport3D.Camera>
                <PerspectiveCamera x:Name="myCamera"
                                   Position="10,10,10" 
                                   UpDirection="0,1,0" 
                                   LookDirection="-10,-10,-10"
                                   FieldOfView="10"/>
    
            </Viewport3D.Camera>
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <GeometryModel3D>
                        <GeometryModel3D.Geometry>
                            <MeshGeometry3D Positions="-1,0,0 0,1,0 1,0,0" TriangleIndices="0,2,1" />
                        </GeometryModel3D.Geometry>
                        <GeometryModel3D.Material>
                            <DiffuseMaterial>
                                <DiffuseMaterial.Brush>
                                    <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                                        <GradientStop Color="Black" Offset="0"></GradientStop>
                                        <GradientStop Color="Red" Offset="0.6"></GradientStop>
                                    </LinearGradientBrush>
                                </DiffuseMaterial.Brush>
                            </DiffuseMaterial>
                        </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <AmbientLight></AmbientLight>
                </ModelVisual3D.Content>
            </ModelVisual3D>
        </Viewport3D>
    
    </Grid>
    

    1 回复  |  直到 17 年前
        1
  •  3
  •   Reed Copsey    17 年前

    您需要向几何体添加纹理坐标:

    <GeometryModel3D.Geometry>
        <MeshGeometry3D 
            Positions="-1,0,0 0,1,0 1,0,0" 
            TextureCoordinates="0,0 1,0 1,1"
            TriangleIndices="0,2,1" 
        />
    </GeometryModel3D.Geometry>
    

    完成此操作后,材质将相应地映射到纹理坐标,您将看到黑色->红色渐变。现在,纹理坐标都默认为渐变“红色”部分的一个点。

    推荐文章