在场景中放置NFT艺术品

……或者如何用吓人的兔子图片吓到别人

转译自Decentraland官方博客

嘿,@holodot,我加入Decentraland社区已经有一段时间了,可能从早期就开始了。作为一名密码迷,一名生活在阿根廷的技术迷,很难不成为这个项目的爱好者。而且我绝不是唯一一个掉入这个兔子坑的人。 

我在硅谷从事产品设计工作多年。Decentraland帮助我学会了更好地编写代码,学习了更多与游戏相关的3D工作流,当然也认识了一些很酷的人。这个虚拟仙境的挑战——也许也是它的美丽之处——是,你需要好的开发者和好的设计师来创造一些非凡的东西。 

Decentraland博物馆区域 

我的团队最喜欢的项目是博物馆区(Museum District),这是一个灵活的空间,在这里你会发现高级策展艺术、艺术家和观众互动的画廊,以及几个NFT市场。 

我们决定设立摊位来接待受邀的艺术家和品牌,他们需要在一个更有品牌和重点的环境中来展示他们的作品。 

我们目前有互动作品、动画模型和其他“数字事件”(比如偷艺术品的机器人)。 

目前,我们正致力于创建NFT浏览体验,同时将整合创客空间(MakersPlace)和其他艺术市场。 

我们已经在现场放置了建筑。其中大部分是我们用Cinema4D制作的,但也有大量的“预制”建筑和画廊可以免费使用。 

放置NFT艺术品到一个场景中 

你可以使用Builder轻松地将2D NFT图像拖放到场景中作为相框。目前,兼容Token的选择仅限于Cryptokitties或Axie Infinity等选项。 

Decentraland团队最近增加了对一些更有趣的与艺术相关的Token的支持,比如MakersPlace和Editional。目前这些只通过SDK支持,它们在构建器上仍然不可用,所以我们必须卷起袖子来好好地编写一些代码。 

SDK还允许我们进行更多的定制,比如将图片缩放到我们想要的任何大小,或者为具有透明度的图片添加自定义背景颜色。 

我将告诉你我是如何自己添加这些nft的,但是如果你想了解更多细节,请查看这个链接。 

下面是我们想嵌入场景的NFT: https://makersplace.com/store/museumdistrict/blue-psyco-rabbit-1-of-3-10337/ 

这个代币是我的,你们可以自己试一试。对于任何其他代币,你都可以遵循相同的步骤,只要它在Decentraland的白名单中(请查看完整的名单)。 

如果你点击创客空间简介(MakersPlace profile)的资产页面上的“查看真实性证明(View Proof of Authenticity)”,你可以在Ethereum区块链项目(https://makersplace.com/authenticity/0x2a46f2ffd99e19a89476e2f6270e0a35bbf0756/7224/)上查看这条记录的详细信息。我们将需要一些这个页面的信息来引用我们的NFT。 

我们需要从这一页得到两个数字: 

  • 合约ID,在本例中是指Makersplace合约。 
  • ID字段,它是这个特定艺术品的唯一引用。 

如下: 

Note: For NFTs in Open Sea, you can simply take the Contract ID and ID from the URL of the asset. So for example if you browse to opensea.io/assets/0x05f02507c7134dbae420ab8c0ef56e999b59da03/47335, you can extract: 

the Contract ID: 80x05f02507c7134dbae420ab8c0ef56e999b59da03 

the artwork ID: 47335 

现在,我们将使用这两个数字来构造一个URL,Decentraland能够使用这个URL来获取艺术品的数据。我们只需要在开头添加ethereum://,然后粘贴合约ID、斜杠,最后是artwork ID

ethereum://0x2a46f2ffd99e19a89476e2f62270e0a35bbf0756/7224/ 

我们将在我们的场景代码中这样使用这个新做成的URL: 

const makersNFT = new Entity() 
const shapeComponent = new NFTShape('ethereum://0x2a46f2ffd99e19a89476e2f62270e0a35bbf0756/7224/') makersNFT.addComponent(shapeComponent) 
engine.addEntity(makersNFT) 

在上面的代码片段中,我们创建了一个实体,并给了它一个NFTShape组件,该组件使用我们刚刚构建的URL从美术作品中获取数据。 

默认情况下,我们的NFT将出现在场景的(0,0,0)位置。如果我们想要改变这个位置,旋转它,或者改变它的比例,我们只需要向实体添加一个Transform组件,并在里面提供一些信息。 

makersNFT.addComponent(  
  new Transform({  
    position: new Vector3(184, 4, 89),  
    scale: new Vector3(1,1,1),  
    rotation: Quaternion.Euler(0, 120, 0)  
}) 

我们完成了,这就是整段的代码: 

const makersNFT = new Entity()  
const shapeComponent = new NFTShape('ethereum://0x2a46f2ffd99e19a89476e2f62270e0a35bbf0756/7224/') makersNFT.addComponent(shapeComponent)  
makersNFT.addComponent(  
  new Transform({  
    position: new Vector3(184, 4, 89),  
    scale: new Vector3(1,1,1),  
    rotation: Quaternion.Euler(0, 120, 0)  
})  
)  
engine.addEntity(makersNFT) 

你已经在你的场景中嵌入了一个NFT资产。 

为Decentraland Game jam增加一些文化元素 

黑客松比赛即将到来。为什么不使用上面的步骤将一些美术作品添加到您在Game Jam中创建的任何内容中呢? 

如果你还没有报名参加比赛,那就点击这里参与吧! 

原文链接

分享你的喜悦!