XR Publisher
  • Worlds
  • Blog
Log in
antpb AvatarEdit Profile
  • Exploring the Metaverse Potential of MagickML: A Multishot System Builder for AI Entities

    Exploring the Metaverse Potential of MagickML: A Multishot System Builder for AI Entities

    Artificial intelligence (AI) has come a long way in just the last year, and one area that has seen significant progress is natural language processing. This technology allows computers to understand and generate human-like language, enabling them to communicate with people in a more natural and intuitive way. With new technology comes new CMS-like software to enable anyone to participate. Enter MagickML, a multishot system builder that leverages the capabilities of GPT-3 and other OpenAI language models to create AI assistants and characters with complex communication patterns. It is, in a sense, a WordPress of AI in that it manages AI themes and content. In this post, we'll take a closer look at Magick and explore its potential to revolutionize the way we interact with AI in virtual worlds, particularly in 3OV.

    What is Magick?

    MagickML is a JavaScript-based framework that allows game designers and developers to rapidly create powerful natural language systems and prototype NPC logic in any web based experience. It utilizes a visual coding style interface, making it easy for users to create "spells" that define complex logic and queries to generate responses. These spells are almost like WordPress themes for AI, allowing users to customize the behavior and communication patterns of their AI assistants and characters. Being JavaScript driven allows for a much wider range of developer to participate. And the icing on the cake, it is open source and Apache Licensed!

    One of the key features of Magick is its ability to integrate with GPT-3 and any other OpenAI language models to logically respond to requests. This enables users to leverage the advanced capabilities of these models to create AI assistants and characters that can understand and generate human-like language. You can use any mixture of language models to generate a final response.

    The framework also allows users to incorporate memory recall or factual biographical information into their responses, as well as any other logic they would like to include to make it feel more natural. Between the final output of an entity, users are able to utilize JavaScript logic to parse many responses from OpenAI to build a final query that generates a more human-like response. Where this differs from something like chatGPT is its ability to send multiple request before giving the end user final output. This gives you room to tweak all the funny bits of language models where a single query might not give you the response you want.

    Example of JS logic from Eliza parsing responses and logging factual information

    The Potential of Magick:

    The potential of Magick facilitating the creation of complex communication patterns with OpenAI language models is vast. In the gaming industry, Magick could be used to create more immersive and engaging experiences for players using AI characters with personality traits, making the game world feel more real and alive.

    I found the potential of chatbots and virtual assistants particularly interesting for 3D web applications. By using Magick to create AI assistants, businesses and organizations could provide more personalized and efficient customer service. Your AI assistant can sell for you within your website. And with 3OV this could even be in a 3D world!

    I built a Magick driven proof of concept in 3OV that allows WordPress site owners to define a URL where their Magick instance lives and make post requests from in-world to display responses above an avatar's head. This avatar is given a personality through "spells" and is able to remember facts about each person that talks thanks to the awesome work Magick contributor m00n has built and shared with their Eliza entity.

    Example Integration

    The following integration of Magick in 3OV very basically shows how you can integrate spells and responses in your apps.

    function ChatBox(props) {
    	const handleChange = async (event) => {
    		event.preventDefault();
    	};
    	const handleSubmit = async (event) => {
    	  event.preventDefault();
    	  // Get the value of the input element
    	  const input = event.target.elements.message;
    	  const value = input.value;
      
    	  // Send the message to the localhost endpoint
    	  const client = 1;
    	  const channelId = "three";
    	  const entity = 11;
    	  const speaker = "antpb";
    	  const agent = "aiko";
    	  const channel = "homepage"; 
    
    	  try {
    		const spell_handler = "four";
    		const spell_version = "latest";
    		const url = encodeURI( `https://localhost:8001/spells/${spell_handler}/${spell_version}` )
    		const response = await axios.post(`${url}`, {
    			inputs: {
    			  Input: value,
    			  Speaker: speaker,
    			  Agent: agent,
    			  Client: client,
    			  ChannelID: channelId,
    			  Entity: entity,
    			  Channel: channel,
    			},
    		  }).then((response) => {
    			const data = response.data;
    
    			const outputs = data.outputs;
    
    			const outputKey = Object.keys(outputs)[0];
    
    			const output = outputs[outputKey];
    
    			props.setMessages([...props.messages, output]);
    		  });
    		} catch (error) {
    		console.error(error);
    	  }
    	};
       
    	return (
    	  <div style={{ marginTop: "-140px", position: "relative", bottom: "15%", left: "5%", width: "50%", height: "10%" }}>
    		<form style={{display: "flex"}} onSubmit={handleSubmit}>
    		  <input type="text" name="message" onInput={handleChange} onChange={handleChange} />
    		  <button type="submit">Send</button>
    		</form>
    	  </div>
    	);
      }Code language: JavaScript (javascript)

    In this example implementation of Magick in the 3OV plugin, the ChatBox function handles the submission of user input and sends it to a localhost endpoint through an HTTP post request. (In this case I have Magick running locally but you could install this on any server.) The request includes a few parameters like the input value, speaker and agent names, client and channel IDs, and entity and channel values. These parameters are passed to the endpoint as an object in the request body and is used to process and store information about the context of the conversation in Magick.

    Upon submission, the function sends the message to a specified Magick spell handler and version, which are defined in the URL of the request. The spell handler and version are set to "four" and "latest" respectively in my example. You could have many spells and route chats to different spell handlers to dynamically make the requests more cost efficient or more technical depending on your needs.

    		const spell_handler = "four";
    		const spell_version = "latest";
    		const url = encodeURI( `https://localhost:8001/spells/${spell_handler}/${spell_version}` )
    		const response = await axios.post(`${url}`, {
    			inputs: {
    			  Input: value,
    			  Speaker: speaker,
    			  Agent: agent,
    			  Client: client,
    			  ChannelID: channelId,
    			  Entity: entity,
    			  Channel: channel,
    			},
    		  }).then((response) => {
    			const data = response.data;
    
    			const outputs = data.outputs;
    
    			const outputKey = Object.keys(outputs)[0];
    
    			const output = outputs[outputKey];
    
    			props.setMessages([...props.messages, output]);
    		  });
    		} catch (error) {
    		console.error(error);
    	  }
    Code language: JavaScript (javascript)

    Upon receiving the request, Magick processes the input and other parameters using the specified spell, and returns a response in the form of an object containing output data. The ChatBox function retrieves the output data and adds it to the list of messages using setMessages. This state is passed to a lower component where the AI assistant avatar file is handled. The message populates above the avatars head and closes the loop of conversation!

    You may notice in the screenshot above there’s json being output with a tone property. That is GPT-3 deciding the tone of the message it is sending! You could easily map this to VRM avatar facial expressions so the AI can naturally interact with you in-world. I plan to get more granular and give the spell control of the default VRM emotion parameters.

    Have a dummy chat endpoint in Thoth throwing random messages and tones that are changing the VRM file's expressions. 😄 This is a sub-spell from the parent "brain" spell that lets you sorta put it in an offline mode where it's not hitting openai all the time, but still available. pic.twitter.com/mNB8NGM32r

    — Three Object Viewer (@xrpublisher) December 21, 2022

    Voice recognition and responses are 100% possible today thanks to the work of Magick contributors. Overall, this implementation of Magick within the 3OV plugin demonstrates simply how the framework can be used to create interactive and personalized communication patterns with AI in a 3D environment. This can go way further and is only limited by imagination.

    Pricing and Caution

    It's important to note that OpenAI queries could potentially be expensive to use, depending on how many shots to the AI you need to make in a spell. For example, if you are using a spell that costs around $0.02 per query and you spell has multiple queries, this could add up quickly if you are making frequent requests. It's important to be mindful of this when using Magick and to consider whether it is cost-effective for your needs. Adjusting language models to cheaper options is another way to ease costs. In my testing I have short circuited the AI bits of a spell to return static responses to mock against as I develop ideas.

    I would encourage using Magick as a local personal AI assistant or implementing safeguards in your Magick spells to recognize when someone is abusing the system. This could include defaulting to basic responses rather than querying GPT when abuse is detected. These are very early days for this project so keep your instances locked down as auth and other gated features work their way into the framework.

    Conclusion:

    Magick is a powerful tool for creating AI assistants and characters with complex communication patterns. Its ability to integrate with GPT-3 and other OpenAI language models allows users to leverage the advanced capabilities of these models to create sophisticated responses. The potential applications of Magick are numerous, and it could revolutionize the way we interact with AI in a wide range of industries, from gaming to customer service. I can’t say for certain how we will officially launch integrations for this in 3OV, but the important part is that it is now possible and we will find the right way to launch support through a NPC block. I’m excited to continue contributing to this framework as it takes shape!

    antpb

    December 17, 2022
    Blog, Uncategorized
  • Three Object Viewer - 1.0.8 Release

    Three Object Viewer - 1.0.8 Release

    In our latest release, we've added several new features and improvements to make your content creation experience even better.

    First, we've added support for click events for audio objects that contain KHR_audio. This allows users to interact with audio objects in your scenes. Further improvements to this feature will be coming soon. To make an audio object interactable, make sure to include a KHR_audio object to the node of an object and make it collidable in your admin editor. To package audio in your glb files use the Third Room Unity Exporter

    We've also added video interactions, allowing users to play and pause videos in your scenes. A paused video will now display a play icon so users can easily resume the video source. Audio support for videos will be added in a future update.

    Below is a demo of audio interactions:

    3D files will be a format for future music distribution.
    I'm working on an album of 3D files that package songs in 3D discs using the proposed KHR_audio glTF extension. One GLB!
    An object with Audio + Collider are assumed to be intractable with play/pause.
    Demo: 🔊 pic.twitter.com/8uQqoS0Pb5

    — antpb (@antpb) December 3, 2022

    Additionally, in this release we've added VR interactions for portal blocks, so users can easily navigate between different scenes by clicking on the portal using VR controller interactions. This makes it easy to create multi-layered and interconnected metaverse experiences. We plan to support the new Meta browser ability to stay in VR experience while changing pages soon.

    We've also fixed several issues in this version:

    • Fixed: Video - autoPlay property was not being properly respected.
    • Fixed: Model and Environment Block - Animations were previously broken since the launch of the Environment Block. All should be good now with the caviat that you cannot use the same object twice in a scene. An update will fix this very soon.
    • Fixed: Sky Block - fixed issue where teleportation to the sky was possible. Stay on the ground!

    With these new features and improvements, 3OV is improving and making it easy for anyone to create and share immersive experiences in the metaverse. Let us know if you have any issues! You can open an issue at the plugin page here. To download the plugin you can visit here or search "Three Object Viewer" in your wp-admin plugin page.

    Try all the new features below!

    vr

    https://xrpublisher.com/wp-content/uploads/2022/11/grid_green_center-1.glb

    1

    0

    0

    0

    0

    1

    https://xrpublisher.com/wp-content/uploads/2022/12/oneoheightpreview.jpg

    https://xrpublisher.com/wp-content/uploads/2022/12/musicspace_solo.glb

    0.6447264874173925

    0.331873581096048

    0.6447264874173925

    93.24231158224123

    -0.8290638469599951

    0.28016241350677973

    0

    0

    0

    rotatingthingAction

    1

    https://xrpublisher.com/wp-content/uploads/2022/12/skygreen.jpg

    170000

    1

    0

    10000

    -10000

    https://xrpublisher.com/wp-content/uploads/2022/11/smallglitchphoto.mov

    1.0000000000000002

    1

    1.0000000000000002

    113.66631235383248

    6.937696780644703

    -46.15929066497685

    3.141592653589793

    -1.5568059979884064

    3.141592653589793

    1

    0

    360

    640

    https://xrpublisher.com/wp-content/uploads/2022/11/smallglitchphoto.mov

    1.0000000000000002

    1

    1.0000000000000002

    110.20816470120008

    6.374122157779418

    46.409111747390874

    3.141592653589793

    -1.5568059979884064

    3.141592653589793

    1

    0

    360

    640

    https://xrpublisher.com/wp-content/uploads/2022/12/track1-3.glb

    2.485889510940245

    2.485889510940245

    2.485889510940245

    86.4594281085934

    7.52076801349839

    0.40380229222763564

    0

    1.4937129866979275

    0

    1

    https://xrpublisher.com/wp-content/uploads/2022/02/banner-1544x500-1.jpg

    -0.41376899289000063

    0.4137689928900011

    0.4137689928900006

    18.545995900577356

    19.248505464545186

    83.17263678903703

    -0.03859377857629248

    0.05936759256903217

    -0.05031755141612687

    500

    1544

    0

    26.010506208051765

    3.7574917188382884

    0

    0

    0

    0

    antpb

    December 6, 2022
    Blog, releases
  • Protected: jukebox

    This content is password protected. To view it please enter your password below:

    antpb

    December 2, 2022
    Uncategorized
  • Protected: 3D files as a music distribution format in the metaverse

    This content is password protected. To view it please enter your password below:

    antpb

    December 2, 2022
    Uncategorized
  • phetta-test

    vr

    https://xrpublisher.com/wp-content/uploads/2022/11/room.glb

    39

    0

    0

    -1.6

    0

    39

    https://xrpublisher.com/wp-content/uploads/2022/11/concrete_display_wall.glb

    1

    1

    1

    0.920283145935274

    2.255772515671387

    -87.26352571183229

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    https://xrpublisher.com/wp-content/uploads/2022/11/istockphoto-915274896-1024x1024-1.jpg

    antpb

    November 28, 2022
    Uncategorized
  • openbrush-ar

    ar

    https://xrpublisher.com/wp-content/uploads/2022/11/all_brushes.glb

    4

    #FFFFFF

    1

    0

    1

    -5

    0

    4

    antpb

    November 15, 2022
    Uncategorized
  • Open Brush Support in 3OV - Make your sculptures come to life in your website!

    Open Brush Support in 3OV - Make your sculptures come to life in your website!

    Openbrush is an app that lets you paint in 3D space with virtual reality. The sculptures constructed in the app are always impressive and include animations with interesting lighting effects. The Icosa Foundation started an effort to preserve the Tilt Brush app through their open source project called Open Brush.

    It has been high on my list of hopes to support Tilt/Open Brush models in 3OV. There are some amazing artists out there that I would love to be able to post their sculptures in a blog format to document their work over time.

    Starting today the Three Object Viewer supports Open Brush files thanks to the awesome work the team did to publish a parser that was very easy to implement in 3OV!

    There are a few things to keep in mind when using the new Three Object Three Icosa Plugin:

    1. The OpenBrush materials will only animate and work with the inner Model Block and the Three Object Block. This means that you should not expect these to work as your base environment mesh. We'll look into support for that in a future release.
    2. There is a companion plugin that you will need to install alongside the Three Object Viewer to enable the brushes.

    Here's a video tutorial on how to install and use the feature. Go make cool stuff!

    Download the companion brushes plugin here and install alongside the Three Object Viewer Version 1.0.5 or higher

    vr

    https://xrpublisher.com/wp-content/uploads/2022/11/grid_green_center-1.glb

    1

    0

    0

    0

    0

    1

    https://xrpublisher.com/wp-content/uploads/2022/11/openbrushpreview.png

    https://xrpublisher.com/wp-content/uploads/2022/11/all_brushes-2.glb

    5.553015897695587

    5.553015897695587

    5.553015897695587

    0

    -3.7160248631399115

    0

    0

    0

    0

    0

    https://xrpublisher.com/wp-content/uploads/2022/02/sky2.png

    0

    2.5618365258793903

    -5.2598035944994175

    0

    0

    0

    antpb

    November 15, 2022
    Blog, Uncategorized
  • Differences between the Three Object Block and the Environment Block

    Differences between the Three Object Block and the Environment Block

    The Three Object Block is the classic object viewer block used for displaying a single object. It has AR, VR, and flat 2D modes to display as. The AR feature is great for viewing avatars. I'm a big fan of the Oculus Browser's mixed reality mode support with the AR device target option in the block. Below is an example of the classic Three Object Block

    Quick Three Object Block Tip

    You can target the 3D container using the .wp-block-xr-publisher-three-object-block css class.

    .wp-block-xr-publisher-three-object-block canvas{
    		// your css here;
    }Code language: JavaScript (javascript)

    The Environment Block

    The Environment block is a fully immersive player focused experience that allows users to use either VR or keyboard and mouse controls to navigate more complex worlds. It has a growing list of support for open standard glTF extensions so you can build in something like the Third Room Unity Exporter to take advantage of a more fully featured 3D editor to build your main environment. This area could be though of as your walkable objects or map where you add inner blocks to populate the world.

    Inner 3D Blocks

    We believe strongly in an always free base set of inner blocks to populate your worlds. Here are the blocks we have so far. These will be always free and unrestricted:

    3D Image Block

    The Image block enables position and rotation settings for any image pulled from your media library. Support for transparency and a future update will include the ability to set external urls as the source.


    3D Video Block

    Similar to image, the video block enables content creators to select video assets from the Media Library to attach to a plane in 3D space. I plan to add the ability to select external urls as well as custom mesh objects to render video on. The block can be paused and played by focusing your view in the direction of the video and clicking.


    3D Model Block

    The model block supports adding usdz, vrm, and glb files to your environment. This block has the ability to loop animations and be set to collidable so visitors can walk on the mesh surface.


    Spawn Point Block

    define where your visitors land when they enter your world.


    Portal Block

    Enable metaverse traversal or dive deeper into your site using urls and collidable objects to trigger traversal. There are settings to control the label and positioning of the label so your visitors know where they are going. This is going to be revamped after release to bring a prompt before traversing to ensure no unintended behavior.


    Text Block

    Use the text block to add text content inside of your worlds. You can define a color, position, and scale of the block of text. There will be more parameters in future updates.


    3D Sky Block

    Wrap your world in a 360 spherical panoramic to simulate skies


    Audio Block

    in progress...as the name suggests, spatial or global audio will be supported via Media Library or url. For now audio can be achieved using the Third Room Unity Exporter to bundle your audio in your environment

    So simply put, the Environment block is a playable experience while the classic Three Object Block is more of a viewer to display products or general 3D art or assets.

    Below is an example of the Environment block:

    antpb

    November 12, 2022
    Blog
  • WordPress, a significant node in the open metaverse

    WordPress, a significant node in the open metaverse
    a screenshot of the editor view of the Three Object Viewer Environment block. On the left is a 3D world with text, images, video, and 3d models. On the right is the familiar sidebar we've come to know and love in the block editor.

    Co-Founder / CEO SXP Digital - builder of Three Object Viewer

    antpb

    WordPress has historically been one of the most shining examples of how an ecosystem built around open source can thrive. It is used by individuals, small businesses, and large organizations to manage and publish content on the web. It represents more than 43% of the top 1m websites on the internet with more than 55,000 plugins extending the core functionality of WordPress. There has been a thriving ecosystem of individual developers and large companies making billions monetizing on top of the open source core. Considering the long history and established community of developers, it stands to reason that WordPress will have a significant footprint in the spatial computing future of web publishing by simply activating a 3D content publishing experience.

    Zooming out and looking at the core features of web content management highlights a few reasons people turn to a CMS.

    A CMS could be broadly defined as:

    • Post/page data
    • Meta associated with data like users and posts
    • A secure user system
    • A rich content editor
    • Extendability through plugins/themes/etc. 

    I've observed that many metaverse platforms are aiming to reach feature parity with what WordPress has excelled in over the last 19 years. A considerable subset of these platforms are doing it in a way that locks users to their infrastructure or subscription services. Everyone is trying to build "The WordPress of VR" and no one is tackling VR WordPress.

    A common marketing trend in metaverse platforms is using the phrase "open metaverse" with an aim to be seen as the standard of what "open" means while also being closed source and locked in. I believe the open metaverse means far more than just supporting a digital asset. The open metaverse should be self-hostable or at minimum served under your own domain. It should aim to be interoperable in a way that allows you to take your content to another platform. The concept of "Open" is a spirit of operating that requires collaboration between world builders. This results in site owners confident that their content behaves the same across metaverse platforms.

    My company's mission is to help lay the groundwork for the metaverse through original contribution to open standards and building open source software to make it easy to bring 3D web experiences to life. We eliminate the need for complicated infrastructure and allow for one click activation of 3D experiences. With the Three Object Viewer Plugin (3OV) update, I am confident we have unlocked a massive opportunity in 3D content publishing.

    a screenshot of the editor view of the Three Object Viewer Environment block. On the left is a 3D world with text, images, video, and 3d models. On the right is the familiar sidebar we've come to know and love in the block editor.

    Introducing the 3OV Environment Block

    The environment block is the biggest leap forward in the development of the Three Object Viewer plugin. This container block serves as a space to insert a suite of 3D inner block elements. The environment block allows a content creator to select a single .glb (glTF) file to be used as the base world to add objects into.

    This block also supports open standards being built through The Khronos Group as well as the Open Metaverse Interoperability Group extensions that we have been helping to develop and trial through 3OV.

    The environment block currently supports the following glTF file extensions:

    KHR_audio - The KHR_audio extension is the first extension that we helped to spec and implement in the Three Object Viewer plugin. This allows for audio to be embedded in a glTF file and be used as positional or global audio types.

    OMI_link - The OMI_link is a Stage 1 OMI extension that allows for portal-like behavior where a link is attached to a mesh alongside a collider node. This allows for a user to walk through an object and traverse to the link defined in the extension.

    OMI_collider - The OMI_collider extension is a Stage 1 OMI Standard that allows for collision meshes to be defined in a scene. In 3OV we use these meshes for the player controller to allow visitors to walk on collidable surfaces. These are also used to define portals as collidable which enables world traversal either deeper into your site or out into other worlds.

    These extensions are the first step to making content interoperable in multiple platforms. We will evaluate and experiment with more as the life of the plugin continues.

    3D Inner Blocks to build metaverse experiences

    We believe strongly in an always free base set of inner blocks to populate your worlds. We will certainly monetize in the near feature through multiplayer networking and "Pro" block features, but it is important to maintain enough value in the core to build impressive 3D web experiences.

    Here are the blocks we have so far. These will be always free and unrestricted:

    3D Image Block

    The Image block enables position and rotation settings for any image pulled from your media library. Support for transparency and a future update will include the ability to set external urls as the source.


    3D Video Block

    Similar to image, the video block enables content creators to select video assets from the Media Library to attach to a plane in 3D space. I plan to add the ability to select external urls as well as custom mesh objects to render video on. The block can be paused and played by focusing your view in the direction of the video and clicking.


    3D Model Block

    The model block supports adding usdz, vrm, and glb files to your environment. This block has the ability to loop animations and be set to collidable so visitors can walk on the mesh surface.


    Spawn Point Block

    define where your visitors land when they enter your world.


    Portal Block

    Enable metaverse traversal or dive deeper into your site using urls and collidable objects to trigger traversal. There are settings to control the label and positioning of the label so your visitors know where they are going. This is going to be revamped after release to bring a prompt before traversing to ensure no unintended behavior.


    Text Block

    Use the text block to add text content inside of your worlds. You can define a color, position, and scale of the block of text. There will be more parameters in future updates.


    3D Sky Block

    Wrap your world in a 360 spherical panoramic to simulate skies


    Audio Block

    in progress...as the name suggests, spatial or global audio will be supported via Media Library or url. For now audio can be achieved using the Third Room Unity Exporter to bundle your audio in your environment glb file.

    Final thoughts and a zip for you...

    This is our line in the sand and the minimum we will offer to the open spatial web. We are leading in building and implementing standards and we are releasing meaningful open source software. It is our view that WordPress will be a key part of the open metaverse by enabling a distributed network of spatial websites and experiences that can share content with each other as well as facilitate traversal to and from worlds. We're excited for you all to build with us in this common metaverse core built on WordPress.

    This is v1 and very much going to change frequently as the dust settles. Use at your own risk!

    1.0 now live: You can install in wp-admin or download the zip at the WordPress plugin repository.

    Try a simple scene below! If on desktop, use WASD keys to move. Click in the canvas to lock your cursor in world and hit escape when you want your mouse back. Mobile support coming soon!

    antpb

    November 10, 2022
    Blog, releases
  • softwarebox

    2d

    https://xrpublisher.com/wp-content/uploads/2022/11/3ovsoftwarebox-1.glb

    6

    #bcff00

    1

    0

    1

    0

    0.568

    6

    Armature.001|mixamo.com|Layer0.001

    antpb

    November 9, 2022
    Uncategorized
Previous Page
1 2 3 4 5
Next Page
  • GitHub
  • X

© 2024 SXP Digital, LLC