Tôi mới đến 'wpf' và tôi đã gặp vấn đề sau: Trong dự án của tôi, tôi cố gắng sử dụng độ phân giải nhỏ .png làm kết cấu cho một mô hình. Khi tôi vô hiệu hóa mipmapping trong Blender (nơi tôi đã xây dựng các khối lập phương) kết quả chỉ là những gì tôi muốn:Mipmapping in wpf
Nhưng trong dự án WPF hiệu ứng mờ không bao giờ tắt:
đây là mã của tôi:
<Window x:Class="GCS.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="504" Width="525" ShowInTaskbar="True">
<Grid>
<Viewport3D Name="myViewport"
xmlns="http://schemas.microsoft.com/netfx/2007/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Viewport3D.Resources>
<MaterialGroup x:Key="Material">
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<ImageBrush RenderOptions.BitmapScalingMode="NearestNeighbor" ViewportUnits="Absolute" ImageSource="char.png"/>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</MaterialGroup>
</Viewport3D.Resources>
<Viewport3D.Camera>
<PerspectiveCamera Position="7.8,-11,-0.8" NearPlaneDistance="1" FarPlaneDistance="50" LookDirection="-0.4,0.9,-0.3" UpDirection="0,0,1" FieldOfView="15"/>
</Viewport3D.Camera>
<Viewport3D.Children>
<ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup>
<GeometryModel3D Material="{StaticResource Material}">
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetZ="0" OffsetX="0" OffsetY="-7"/>
<ScaleTransform3D ScaleZ="1" ScaleY="1" ScaleX="1"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1,0,0" Angle="92"/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
<TranslateTransform3D OffsetZ="0" OffsetX="0" OffsetY="7"/>
<TranslateTransform3D OffsetZ="-6.622" OffsetX="0" OffsetY="-0.023"/>
</Transform3DGroup>
</GeometryModel3D.Transform>
<GeometryModel3D.Geometry>
<MeshGeometry3D
Normals="-1,0,0 -1,0,0 -1,0,0 -1,0,0 0,0,-1 0,0,-1 0,0,-1 0,0,-1 1,0,0 1,0,0 1,0,0 1,0,0 0,0,1 0,0,1 0,0,1 0,0,1 0,-1,0 0,-1,0 0,-1,0 0,-1,0 0,1,0 0,1,0 0,1,0 0,1,0"
Positions="-1,6,-1 -1,6,1 -1,8,1 -1,8,-1 -1,8,-1 1,8,-1 1,6,-1 -1,6,-1 1,8,-1 1,8,1 1,6,1 1,6,-1 -1,6,1 1,6,1 1,8,1 -1,8,1 -1,6,1 -1,6,-1 1,6,-1 1,6,1 1,8,1 1,8,-1 -1,8,-1 -1,8,1"
TextureCoordinates="0,0.5 0.125,0.5 0.125,0.25 0,0.25 0.5,0.25 0.375,0.25 0.375,0.5 0.5,0.5 0.375,0.25 0.25,0.25 0.25,0.5 0.375,0.5 0.125,0.5 0.25,0.5 0.25,0.25 0.125,0.25 0.375,0.25 0.375,0 0.25,0 0.25,0.25 0.25,0.25 0.25,0 0.125,0 0.125,0.25"
TriangleIndices="0 1 2 0 2 3 4 5 6 4 6 7 8 9 10 8 10 11 12 13 14 12 14 15 16 17 18 16 18 19 20 21 22 20 22 23"/>
</GeometryModel3D.Geometry>
</GeometryModel3D>
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<AmbientLight Color="#ffffff"/>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D.Children>
</Viewport3D>
</Grid>
Tôi đã thực hiện rất nhiều tìm kiếm trên Internet và đã thử nhiều cách tiếp cận: dựng hình phần mềm được thực thi, sử dụng DrawingBrush thay vì ImageBrush nhưng kết quả là như nhau. Có cách nào để vượt qua việc dựng hình như vậy không?
Bạn đang thiết 'RenderOptions.BitmapScalingMode' mục ' ImgaeBrush'. Tôi không biết đây có phải là giải pháp (do đó một bình luận thay vì câu trả lời), nhưng bạn cũng có thể đặt nó trên 'GeometryModel3D',' ModelVisual3D' và 'ViewPort3D', cũng như' Window' và ' Lưới'. Bạn đã thử bất kỳ/tất cả các tùy chọn này để xem liệu nó có tạo sự khác biệt không? Có vẻ như có thể với tôi rằng bản thân ImageBrush không thực sự làm việc mở rộng trong một kịch bản 3D và do đó thiết lập RenderOptions trên đối tượng cọ vẽ sẽ không có hiệu ứng mong muốn. –
Cảm ơn bạn đã trả lời. Trong thực tế, tôi đã thử tất cả các biến thể của một và thậm chí với nhau. Kết quả là như nhau ((( – user1662530
Ah - ra khỏi ý tưởng sau đó! Tôi đoán là rendering đang được thực hiện bởi phần cứng 3D trong card đồ họa của bạn, mà WPF dường như có ít kiểm soát hơn chúng ta có thể thích. đoán, mặc dù và tôi không có ý tưởng làm thế nào hoặc thậm chí cho dù nó có thể ghi đè lên nó nếu đó là trường hợp. Long shot, nhưng trình điều khiển card video của bạn được cập nhật? –