WPF 3D 贴图: 为你的二次元老婆们做个3D画廊

article/2025/11/10 17:57:58

文章目录

    • WPF3D系列
    • 为你的二次元老婆们做个3D画廊

WPF3D系列

  • 💎WPF 3D初步|源码 新建一个立方体并调整视角
  • 相机控制:位置和视角的调节
    • 💎键盘控制|源码
    • 💎鼠标控制|源码
  • 💎为你的二次元老婆们做个3D画廊|源码
  • 💎用C#搓一个地球|源码
  • 💎基础光效💎给地球点颜色看看
  • 💎选中并挪动几何体

为你的二次元老婆们做个3D画廊

工程地址:二次元老婆们的画廊

接下来想做一个图廊,所以并没有必要用立方体,只需做一些“墙壁”就行了。
而在一个平面上建起另一个矩形的平面,实则非常容易,只需输入墙角的两点和高度就可以了,这对于写过正方体的人来说绝对是简单得很,无非是把四个点劈成两个三角形

private MeshGeometry3D MakeSurface(Point3D p0, Point3D p1, Point3D p2, Point3D p3)
{MeshGeometry3D mesh = new MeshGeometry3D();Point3D[] pts ={p0, p1, p2, p3};foreach (var pt in pts)mesh.Positions.Add(pt);foreach (var i in new int[6] { 0, 1, 2, 2, 3, 0 })mesh.TriangleIndices.Add(i);return mesh;
}

接下来可以像之前做正方体时那样,先做一个平的地面,然后在地面上放置一些正方体。

由于地面上的正方形要求垂直于地面,所以重载一下

private MeshGeometry3D MakeSurface(Point p0, Point p1, double high)
{return MakeSurface(new Point3D(p0.X, 0, p0.Y), new Point3D(p1.X, 0, p1.Y), new Point3D(p1.X, high, p1.Y), new Point3D(p0.X, high, p0.Y));
}

然后生成模型

在这里插入图片描述

代码为

private void DefineModel(Model3DGroup group)
{// Make the ground.const double wid = 10;MeshGeometry3D groundMesh = MakeSurface(new Point3D(-wid, 0, -wid),new Point3D(-wid, 0, +wid),new Point3D(+wid, 0, +wid),new Point3D(+wid, 0, -wid));DiffuseMaterial groundMaterial = new DiffuseMaterial(Brushes.DarkGray);GeometryModel3D groundModel = new GeometryModel3D(groundMesh, groundMaterial);group.Children.Add(groundModel);MaterialGroup gpMaterial;for (int x = -2; x <= 2; x += 2){for (int y = -2; y <= 2; y += 2){MeshGeometry3D mesh = MakeSurface(new Point(x, y), new Point(x, y + 1), 1);byte r = (byte)(128 + x * 50);byte g = (byte)(128 + y * 50);byte b = (byte)(128 + x * 50);Color color = Color.FromArgb(255, r, g, b);DiffuseMaterial material = new DiffuseMaterial(new SolidColorBrush(color));GeometryModel3D model = new GeometryModel3D(mesh, material);group.Children.Add(model);}}
}

接下来就是挂载贴图,结果大致如下

在这里插入图片描述

其方法也很简单,就是把material变成想要的图片,故而先把图像放在一个字符串数组里

static readonly string[] imgs = new string[9]
{"2d1.png","2d2.png","2d3.png","2d4.png","2d5.png","2d6.png","2d7.png","2d8.png","2d9.png"
};

接下来需要注意一点,图像本身需要一个坐标系,故而要把墙壁的代码改为

private MeshGeometry3D MakeSurface(Point p0, Point p1, double high, string uri = null)
{var mesh = MakeSurface(new Point3D(p0.X, 0, p0.Y), new Point3D(p1.X, 0, p1.Y), new Point3D(p1.X, high, p1.Y), new Point3D(p0.X, high, p0.Y));//这四个点代表图像上的坐标和图形中点的对应关系Point[] textureCoods = new Point[4]{new Point(0, 1),new Point(1, 1),new Point(1, 0),new Point(0, 0),};foreach (var pt  in textureCoods)mesh.TextureCoordinates.Add(pt);return mesh;
}

然后在生成正方形时,用图像取代颜色

ImageBrush imgBrush = new ImageBrush();
imgBrush.ImageSource = new BitmapImage(new Uri($"imgs//{imgs[k++]}", UriKind.Relative));MeshGeometry3D mesh = MakeSurface(new Point(x, y), new Point(x, y + 1), 1);GeometryModel3D model = new GeometryModel3D(mesh, new DiffuseMaterial(imgBrush));
group.Children.Add(model);

这样二次元妹纸就花在墙壁上啦。

当然,如果想象力丰富的话可以把墙壁连在一起像迷宫那种,肯定会有沉浸式的体验。


http://chatgpt.dhexx.cn/article/VHLNVJ9v.shtml

相关文章

二次元导航HTML源码 可做个人主页

介绍&#xff1a; 二次元导航HTML源码分享的一款导航源码&#xff0c;源码非常的简介大家可以自用&#xff0c;也可以拿来当做一个个人主页&#xff0c;源码是HTML的&#xff0c;大家在index里修改内容即可&#xff01; 网盘下载地址&#xff1a; http://kekewl.cc/eDCDYmJ6T…

换一种姿势阅读《人工智能简史》

2017 年 12 月&#xff0c;一本名为《人工智能简史》的图书发布。这个时间节点对于多数普通人的生活来说不算特别&#xff0c;但正是从前一年开始&#xff0c;人工智能在世界范围内开始进入了一段新的飞速发展期。2017 年和 2018 年也是中国 AI 企业的创业热潮期。 你说这个时代…

AI 小说里的人物

笑靥如花&#xff0c;神姿仙貌&#xff0c;仙衣飘飘&#xff0c;步履轻巧。锦绣前程&#xff0c;梦境之路&#xff0c;一顾倾人城&#xff0c;一笑惊人寰宇。仙女之貌&#xff0c;神秘非凡&#xff0c;信手拈来神仙之器&#xff0c;引领万千少年仰慕&#xff0c;此身非凡&#…

【转载】人工智能发展简史

网络查阅资料时候&#xff0c;看到的对人工智能发展简史&#xff0c;较为完整的讲述&#xff0c;故转载&#xff0c;仅供学习使用&#xff0c;原文链接&#xff1a;https://www.aminer.cn/ai-history。侵删。 人工智能到底是什么&#xff1f;通常来说&#xff0c;人工智能&…

与AI合作穿越剧 编剧徐婷:AI脑洞大,但无法替代人类的情感表达

热门喜剧秀《周六夜现场》本季提前结束&#xff0c;美剧《亿万》最新第七季的更新搁浅&#xff0c;漫威新电影《新刀锋战士》暂停拍摄……美国影视娱乐行业的编剧们以抵制AI为由的大罢工&#xff0c;开始影响诸多作品的产出&#xff0c;据说造成了100亿美元的损失。 这场罢工已…

竞逐对话式AI,百度、字节各有千秋

随着OpenAI陆续发布的ChatGPT引发了AI界热议&#xff0c;新一代的AI热度便开始持续走高。与此同时&#xff0c;以ChatGPT模型为代表的大型预训练模型的出现&#xff0c;也使得对话式AI的生成能力和智能水平得到了飞跃式的提升&#xff0c;得益于此&#xff0c;对话式AI的发展又…

人工智能简史+电子版原文

自从学习了人工智能&#xff0c;对其的发展史产生了浓厚的兴趣&#xff0c;于是选择了《人工智能简史》这本书细细品味。下面将分享我看书时的一些体会。 人工智能的发展过程 我们想要理解人工智能&#xff0c;首先要知道这个名词从何而来。1956年达特茅斯会议被公认为人工智能…

AI:周志华老师文章《关于强人工智能》的阅读笔记以及感悟

AI&#xff1a;周志华老师文章《关于强人工智能》的阅读笔记以及感悟 导读 关于人工智能&#xff0c;长期存在两种不同的目标或者理念。一种是希望借鉴人类的智能行为&#xff0c;研制出更好的工具以减轻人类智力劳动&#xff0c;一般称为“弱人工智能”&#xff0c;类似…

《人工智能》之《绪论》习题解析

教材&#xff1a;《人工智能及其应用》&#xff0c;蔡自兴等&#xff0c;2016m清华大学出版社&#xff08;第5版&#xff09; 参考书&#xff1a; 对应同系列博客&#xff1a;《人工智能》之《绪论》 《人工智能》之《绪论》习题解析 1 什么是人工智能&#xff1f;试从学科…

解读人工智能续写名著的经典论

这段时间&#xff0c;人工智能“续写”名著的现象受到舆论聚焦。在人工智能的“作品”中&#xff0c;“林黛玉大战孙悟空”之类“脑洞大开”的情节纷纷亮相&#xff0c;大大超出了一般人的预料。面对《聊斋志异》里的经典故事&#xff0c;人工智能竟然创作出了 “蒲松龄笔下的狼…

一个资深小说迷打开小说的正确姿势(续)----百度AI文字转语音

前段时间闲得无聊&#xff0c;使用python抓取了自己想看的小说&#xff0c;抓取方法&#xff1a;一个资深小说迷打开小说的正确姿势 最近发现连续长时间盯着屏幕&#xff0c;眼睛实在是有点遭不住。对于我这种又想保护视力&#xff0c;又不想放下小说的人来说&#xff0c;简直…

程序员的三体世界 小说|从千万级架构到大数据人工智能中台的讨论

程序员的三体世界 从千万级架构到大数据人工智能中台的讨论 目录 程序员的三体世界 序言 第一节 面试 第二节 大数据已标准化&#xff0c;人工智能还是人工智障 第三节 中台 旁白 序言 当你真正的明白程序员是什么&#xff0c;你们还引以为傲吗&#xff0c;你们还想入…

股票交易接口软件服务涵盖范围有哪些?

通常所说的股票交易接口软件是指量化交易程序员们可以自行查询各大交易网站或交易所的股票历史数据及行情数据的工具&#xff0c;如&#xff1a;实时报价&#xff1b;走势图&#xff1b;价差图&#xff1b;基金、债券、期货、外汇、保险等各类金融数据查询等&#xff0c;进行数…

国外高校解除ChatGPT禁令,对留学生是福是祸?

ChatGPT发布近1年&#xff0c;各大高校对它的态度也发生了极大转变&#xff0c;今年3月发布ChatGPT禁令的牛剑等世界顶级名校也在近期解除了ChatGPT禁令&#xff0c;发布了生成式人工智能使用指南。 ChatGPT一定程度上可以解放科研人员的劳动力&#xff0c;与其直接禁止不如教…

计算机专业留学生回国找工作容易吗,留学生归国后一般都找什么工作?

对于留学生归国找工作的人来讲&#xff0c;找工作似乎已经成为困扰他们的难题。毕竟现在国内市场中&#xff0c;优秀的工作岗位竞争一直很大&#xff0c;这些留学生们要找什么样的工作&#xff0c;以及在找工作之时会遇到什么难处呢&#xff1f;针对这两点&#xff0c;BOSS直聘…

Ubuntu输入密码登陆不了仍跳回到登录界面

现象&#xff1a;在Ubuntu登陆界面输入密码之后&#xff0c;黑屏一闪并且出现了check battery state之类的文字之后&#xff0c;又跳转到登录界面。 原因&#xff1a;主目录下的.Xauthority文件拥有者变成了root&#xff0c;从而以用户登陆的时候无法都取.Xauthority文件。 说…

管理后台,登录后回到登陆前的页面(比如地址栏输入页面地址但是还没登录会回到登录页面,登录后回到这个页面)

首先应该在路由守卫那里应该把这个地址存起来。 我在项目中用的是在路由守卫那里把地址用localstorage存起来。 详细代码如下&#xff1a; router.beforeEach((to, from, next) > { let permission {} let role JSON.parse(localStorage.getItem(‘role’)); for (let k…

登录页面成功

1.首先我们把跳转到页面登录成功的js链接拉进来&#xff0c;然后建立个外部CSS我们用来写页面样式&#xff0c;并且拉进我们的页面当中。 2.然后开始搭建页面我们需要到的有登录页面名称&#xff0c;用户名文本框以及密码文本框&#xff0c;还有一个登录按钮&#xff0c;每个文…

latex格式的英文文章中引用的中文参考文献在BIBTEX中的格式是如何的

查找了很多如何在bibtex中引用中文的参考文献&#xff0c;找到的总是bibtex如何在latex中的添加或者是显示&#xff0c;但是到底在bib文件中是如何写的呢&#xff1f; 中文文献在英文文献中引用首先就需要把它翻译成英文&#xff0c;而中文文献里都有英文标题&#xff0c;姓名…