Try โ€‚โ€‰HackMD

#welovetheart Metaverse Gallery


Information

Average filesize of website preview images: 1.5 MB
Total: 8 GB

Prizes

Visualize as branded stacks of OP tokens

1,200,000 OP in prizes! 47 winners per category

  • 1st tier: 50K OP prize (2 winners per category)
  • 2nd tier: 20K OP prize (5 winners per category)
  • 3rd tier: 7K OP prize (10 winners per category)
  • 4th tier: 1K OP prize (30 winners per category)

Winners

https://docs.google.com/spreadsheets/d/1t2cyyqZgpIjXssvpt-twe0qmPTeUSEZBEoJeFTtA6Qo/edit#gid=719725938

Entries

Total around ~6336 entries submitted, broken down into the following categories:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More โ†’


Anarchy Arcade style metadata, create meta-object shortcuts

ETA 1 day for JSON, 1 week for world

{"title":"Neon Drive","file":"steam://run/433910","screen":"http://cdn.steamstatic.com/steam/apps/433910/header.jpg","preview":"http://www.youtube.com/watch?v=UTkioWWjpsw","reference":"http://store.steampowered.com/app/433910","type":"pc"}

{"title":"SuperSmashLand","file":"SuperSmashLand.exe","screen":"http://www.supersmashland.com/imgs/screenshot1.png","marquee":"https://i.ytimg.com/vi/KVROb_FPZCc/maxresdefault.jpg","preview":"https://www.youtube.com/watch?v=351CO5_8fbM","download":"http://www.supersmashland.com/","reference":"http://en.wikipedia.org/wiki/Super_Smash_Land","description":"Super Smash Land is a demake of Super Smash Bros. released in September 14, 2011 by Dan Fornace. The game features 6 playable characters and 11 stages. The game visual design resembles the graphics from the Nintendo Game Boy. The game was developed with GameMaker 7.","keywords":"retro, nintendo","type":"pc"}

{"title":"The Simpsons","file":"https://www.hulu.com/the-simpsons","screen":"http://a248.e.akamai.net/ib.huluim.com/show_key_art/58?size=1280x720","marquee":"http://assetshuluimcom-a.akamaihd.net/h2o/facebook_share_thumb_default_hulu.png","description":"Watch The Simpsons online. Stream episodes and clips of The Simpsons instantly.","keywords":"homer, bart","type":"tv"}

Blender Import/Export Script

ETA 3-4 days

Want to be able to associate the art with Title + Description + Platform minted on, perhaps via generating textures for 2 separate materials in Blender or adjoining them together into 1 texture and using a UVmap to separate into different meshes. It might become tricky if using an atlas since things will get mixed up easily, creating more manual work for us.

Some ideas on how to solve:

  1. Order things together based on size / resolution
  2. Adjoin metadata pieces together, can be same size for UVmap placement
  3. Make sure each artwork is associated with its metadata / placement

Need a couple scripts:

  • CSV with Number (1-100), ID, Title, Description, Featured Image, Platform

  • Imagemagick script

    • Check Featured Image URLs to avoid basename conflicts, download
      • [x]]Ignore gifs for now
    • Measure size of each image (identify -ping -format '%w %h' image.jpg)
      • Add data to each row
    • Create title / description image texture (https://imagemagick.org/Usage/text/)
    • Compose logo of minting platform at bottom right
  • Download / Convert Featured Image URLs to nearest Power of Two (see Anata scripts)

    • Can rename image filenames to $id.ext
    • $id_metadata.jpg for metadata textures
  • Python script

    • Import into Blender with Image as Planes
    • Scale according to resolution (each image starts as square)
    • Move each image in the scene to be separated
      • Experiment with different layouts
        • Grid
        • Circular
        • Cascade
        • Street
        • Gallery
    • Export as glTF file
      • Atlas all images smaller than ~1024x1024
        • Can use pureref or UVmap plugin?
      • Apply resizing / compression / optimizations

https://blender.stackexchange.com/questions/193520/auto-apply-a-frame-to-over-50-imported-paintings
http://www.fmwconcepts.com/imagemagick/picframe/index.php

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More โ†’

import bpy

def import_image_plane(image_path):
    # Clear existing mesh objects
    bpy.ops.object.select_all(action='DESELECT')
    bpy.ops.object.select_by_type(type='MESH')
    bpy.ops.object.delete()

    # Import image as plane
    bpy.ops.mesh.primitive_plane_add(size=1, enter_editmode=False, align='WORLD', location=(0, 0, 0))
    plane = bpy.context.object
    plane.name = "ImagePlane"

    # Set the material using the image texture
    mat = bpy.data.materials.new(name="ImageMaterial")
    mat.use_nodes = True
    bsdf = mat.node_tree.nodes["Principled BSDF"]
    tex_image = mat.node_tree.nodes.new(type="ShaderNodeTexImage")
    tex_image.image = bpy.data.images.load(image_path)
    mat.node_tree.links.new(bsdf.inputs['Base Color'], tex_image.outputs['Color'])

    # Assign the material to the plane
    if plane.data.materials:
        plane.data.materials[0] = mat
    else:
        plane.data.materials.append(mat)

    return plane

def scale_plane_to_texture_size(plane):
    # Get image texture dimensions
    tex_width = plane.material_slots[0].material.node_tree.nodes["Image Texture"].image.size[0]
    tex_height = plane.material_slots[0].material.node_tree.nodes["Image Texture"].image.size[1]

    # Calculate scale factors
    scale_x = tex_width / 1024
    scale_y = tex_height / 1024

    # Apply scale to the plane
    plane.scale.x = scale_x
    plane.scale.y = scale_y

# Example usage
image_path = "/path/to/image/1of1s/16048.png"
plane = import_image_plane(image_path)
scale_plane_to_texture_size(plane)

Ideas

  • try extruding into canvas frame
  • try creating a custom frame for every image on plane

Pros

  • Can create reusable assets for many different platforms
  • More optimized assets and reduced draw calls
  • Could turn into an interesting NFT collection, mementos

Cons

  • Not useful for gifs, mp4, HTML, audio NFTs
  • More advanced, might take more work

Portal Street

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More โ†’


Hyperfy Regenerative World

Cronjob to rotate permaurl links to submissions on server every X days to dynamically update an image or model in-world, possibly a video as well if using FFMPEG to concat media together for video walls.

  • Create a hyperfy gallery world with placeholder objects
    • Can reuse Oncyber galleries that jin bought
    • Create something new in color scheme for Optimism
  • Implement some kind of counter that signed in users can use to vote on each piece
    • Gather votes after each day before next rotation, reset counter
    • Only those that bought the NFT or are judges can vote, token gate it

Assets

Logos and Thumbnails

Inspiration

Swag

  • Simple tshirt (Vroid / MetaFactory) with contest logo + sponsors on the back
  • Open edition on Zora + Optimism with in-world hyperfy minting

Presentation Formats

image

https://www.awwwards.com/immersive-webgl-virtual-gallery-exhibition-collection.html

image

image

Notes

277 cases of missing featured images for submission entries, including jin's "Burning the Midnight Oil" which is a HTML NFT. For entries that are not static media (jpg, png, gif), having a featured image might give the wrong impression of the art if viewed only as the thumbnail.
image

Noticed there were cases of spam entries, this one is ~10% of generative art category. Can easily check for duplicate entries by searching columns for duplicates using Google Sheets.
image