vue3+threejs新手从零开发卡牌游戏(三):尝试在场景中绘制一张卡牌

本文介绍了如何利用three.js库在网页上实现一张具有正面和背面的动态卡牌,包括寻找素材、创建Box几何体、使用TextureLoader加载图片并设置不同材质面的过程。
摘要由CSDN通过智能技术生成

首先我们思考下,一张最简单的卡牌有哪些东西构成:卡牌样式卡牌数据。一张卡牌有正面和背面,有名称、属性、种族、攻击力等数据,我们先不考虑数据,先尝试在场景中绘制一张卡牌出来。

一、寻找卡牌素材

为了简单我直接去游戏王决斗链接官网上面找的卡牌素材,然后百度图片游戏王卡背,拿到卡背的素材(注:所有threejs相关的素材建议全放在public目录下,目录结构如下所示:

卡面:(无敌的)青眼白龙

卡背:

back目录下存放的是卡背图片,card目录下存放的是卡牌的正面

二、在场景中绘制几何体

这里我选择的是Box几何体,方便处理正面和背面不同的素材

根据threejs官方代码示例,我们在initScene方法中添加renderCard方法:

// 初始化场景
const initScene = () => {
  ...

  renderCard()
}
// 创建卡牌
const renderCard = () => {
  const geometry = new THREE.BoxGeometry( 1, 0.02, 1.4 ); 
  const material = new THREE.MeshBasicMaterial( {color: 0x00ff00} ); 
  const cube = new THREE.Mesh( geometry, material ); 
  scene.add( cube );
}

刷新页面展示如下:

一个绿色的几何体就出现在了场景里

三、使用TextureLoader加载素材图片

在threejs文档中找到TextureLoader的使用示例:

由于我们使用的是Box几何体,他本身有6个面,所以我们可以通过分别设置六个面的材质来渲染不同的图案(注:3和4两个面对应的是我们卡牌的正面和背面,其他几个面可以随便设置个颜色即可)我们修改下renderCard代码:

// 创建卡牌
const renderCard = () => {
  const geometry = new THREE.BoxGeometry( 1, 0.02, 1.4 ); 
  // const material = new THREE.MeshBasicMaterial( {color: 0x00ff00} ); 
  let materials = []
  // 卡牌正面
  const frontTexture = new THREE.TextureLoader().load("textures/card/YZ-01.png");
  // 卡牌背面
  const backTexture = new THREE.TextureLoader().load("textures/back/01.jpeg");

  const m1 = new THREE.MeshBasicMaterial({
    color: new THREE.Color("gray")
  });
  materials.push(m1)

  const m2 = new THREE.MeshBasicMaterial({
    color: new THREE.Color("gray")
  });
  materials.push(m2)

  const m3 = new THREE.MeshBasicMaterial({
    map: frontTexture
  });
  materials.push(m3)

  const m4 = new THREE.MeshBasicMaterial({
    map: backTexture
  });
  materials.push(m4)

  const m5 = new THREE.MeshBasicMaterial({
    color: new THREE.Color("gray")
  });
  materials.push(m5)

  const m6 = new THREE.MeshBasicMaterial({
    color: new THREE.Color("gray")
  });
  materials.push(m6)

  const cube = new THREE.Mesh( geometry, materials ); 
  scene.add( cube );
}

四、刷新页面后效果如下:

旋转后可以看到背面

至此,我们成功在场景中绘制了一张卡牌。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Vue3和Three.js渲染室内地图有几个主要步骤。 首先,你需要准备好室内地图的数据。这可以是一个包含房间、墙壁、家具等元素的3D模型文件,如OBJ或GLTF格式。你还可以考虑将地图数据转换为JSON格式,并使用自定义脚本生成3D对象。 接下来,在Vue3创建一个Three.js的场景(Scene)。你可以使用Vue Composition API来创建一个自定义的Vue组件,该组件将负责Three.js的初始化和场景绘制。在这个组件,你将使用Three.js的PerspectiveCamera来设置透视投影相机,并使用OrbitControls插件来实现用户交互控制。 然后,你需要加载地图数据并将其转换为Three.js的3D对象。你可以使用Three.js提供的加载器(Loader)来加载3D模型文件。完成加载后,你可以将模型添加到场景,并设置其位置、旋转等属性。 最后,你可以根据需要添加光源、阴影效果、材质等来提高渲染效果。你可以通过创建Three.js的光源对象,如DirectionalLight或SpotLight,来模拟现实世界的光照。你可以使用Three.js的材质(Material)来定义模型的外观和反射属性,如颜色、贴图等。 通过以上步骤,你可以在Vue3应用使用Three.js渲染室内地图。不过,请注意,使用Three.js进行复杂的渲染可能对性能有一定要求,你可能需要优化性能,如使用LOD(多级细分)模型、合并几何体等技术来提高性能并避免顿。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清岚_lxn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值