3D笔记——纹理平铺 3D Material ImageBrush TileMode

本文介绍了3D渲染中使用ImageBrush进行纹理平铺的方法。通过设置Stretch为None,TileMode为Tile,以及调整Viewport和ViewportUnits为绝对单位,可以实现纹理的重复显示。在MeshGeometry3D中,利用TextureCoordinates属性精确控制每个顶点的纹理坐标,以达到10倍Viewport大小的效果,从而创建出10个平铺的图像块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<Viewport3D>
            <Viewport3D.Camera>
                <PerspectiveCamera LookDirection="-1,-1,-1" Position="1000,1000,1000" UpDirection="0,1,0" FieldOfView="45"></PerspectiveCamera>
            </Viewport3D.Camera>
            <Viewport3D.Children>
                <ModelVisual3D>
                    <ModelVisual3D.Content>
                        <Model3DGroup>
                            <!--<AmbientLight />-->
                            <PointLight Position="-1000,1000,1000" />
                        </Model3DGroup>                                            
                    </ModelVisual3D.Content>
                </ModelVisual3D>
                <ModelVisual3D>
                    <ModelVisual3D>
                        <ModelVisual3D.Content>
                            <Model3DGroup>
                                <GeometryModel3D>
                                    <GeometryModel3D.Material>
                                        <DiffuseMaterial Brush="White"></DiffuseMaterial>
                                    </GeometryModel3D.Material>
                                    <GeometryModel3D.Geometry>
                                        <MeshGeometry3D
                                        Positions="-100,100,100 100,100,100 100,-100,100 -100,-100,100 100,100,-100 -100,100,-100 -100,-100,-100 100,-100,-100"
                                        TriangleIndices="0,2,1 0,3,2 1,7,4 1,2,7 4,6,5 4,7,6 5,3,0 5,6,3 5,1,4 5,0,1 3,7,2 3,6,7">
                                        </MeshGeometry3D>
                                    </GeometryModel3D.Geometry>
                                </GeometryModel3D>
                                <GeometryModel3D>
                                    <GeometryModel3D.Geometry>
                                        <MeshGeometry3D Positions="-1000,-100,-1000 1000,-100,-1000 1000,-100,1000 -1000,-100,1000"
                                            TriangleIndices="0 2 1 0 3 2" TextureCoordinates="0,0 1000,0 1000,1000 0,1000"/>
                                    </GeometryModel3D.Geometry>
                                    <GeometryModel3D.Material>
                                        <DiffuseMaterial>
                                            <DiffuseMaterial.Brush>
                                                <ImageBrush ImageSource="/WorldViewer;component/Images/无标题1.png" Stretch="None" TileMode="Tile" Viewport="0,0,100,100" ViewportUnits="Absolute" />
                                            </DiffuseMaterial.Brush>
                                        </DiffuseMaterial>
                                    </GeometryModel3D.Material>
                                </GeometryModel3D>

                            </Model3DGroup>
                        </ModelVisual3D.Content>
                    </ModelVisual3D>
                </ModelVisual3D>
            </Viewport3D.Children>
        </Viewport3D>

请看ImageBrush

Stretch设置为None

TileMode设置为Tile

Viewport作为一个图块的大小

ViewportUnits设置为Absoltue

 

MeshGeometry3D的TextureCoordinates属性对应每个Positions的点

TextureCoordinates="0,0 1000,0 1000,1000 0,1000"

左上角为开始,右下角以1000,1000结束

这个1000,1000是这个Mesh显示的图片大小

10倍的Viewport,显示出来就有10个图块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值