<div dir="auto">Here’s a question.  Is whitespace copyrightable, when generated by pretty printers?   Can I get sued for copying whitespace?</div><div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Mon, Jul 28, 2025 at 12:41 PM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">That’s a good point, I know one of my files has a large header.  I will check the others.</div><div dir="auto"><br></div><div dir="auto">I believe the convertX3dToPly.js (the header one) is entirely LLM,  the others were placed into LLM and merged into one, or updated.   I would have to analyze the logs to determine the LLM author.  I do copy/paste, like the whole file, even when it’s partially written by me.  I do my own commits.</div><div dir="auto"><br></div><div dir="auto">Do you want me to label the PLY output model?</div><div dir="auto"><br></div><div dir="auto"><div><a href="https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/data/pp3.x3d" target="_blank">https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/data/pp3.x3d</a></div><div dir="auto"><br></div><div dir="auto">The above link is all my code.  It’s real.</div><div dir="auto"><br></div><div dir="auto">I also provide examples to the LLM to help with coding.</div><div dir="auto"><br></div><div dir="auto">It’s unclear who owns the output of an LLM generated program?</div><div dir="auto"><br></div><div dir="auto"> can also put comments in the CSS code and the responsive CSS, I didn’t write that.</div></div><div dir="auto"><div dir="auto"><br></div><div dir="auto">John</div><br></div><div dir="auto"><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Mon, Jul 28, 2025 at 12:01 PM Vincent Marchetti via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">Is pp3.x3d a real file with a accessible URL or is it a phantasm conjured up by a large language model?<br>
<br>
Related, I request that any content generated by a large language model, or for that matter any text copied from a 3rd party, be clearly identified as such and the source ( LLM or otherwise) be identified<br>
<br>
Thank You<br>
Vince Marchetti<br>
<br>
<br>
> On Jul 28, 2025, at 12:08 PM, John Carlson via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>> wrote:<br>
> <br>
> Maybe some could try this prompt generated by AI:  maybe expand it to create a PROTO:<br>
> <br>
> You are asking about a very advanced and complex feature for X3D. Native X3D specifications do not include nodes for rich text editing, such as multi-line selection, cut, copy, and paste, directly within the 3D scene.<br>
> <br>
> The example you've pointed to, pp3.x3d, demonstrates a sophisticated, custom-built solution that simulates this functionality using a combination of sensors, scripts, and programmatic manipulation of the scene graph. It is not an "out-of-the-box" feature but rather a scripted application running inside the X3D environment.<br>
> <br>
> Here is a breakdown of how such a system is built, based on the techniques used in advanced examples like the one you referenced.<br>
> <br>
> The Concept: Building a Text Editor from Scratch in 3D<br>
> To achieve editable 3D text, you must essentially recreate the logic of a text editor using X3D's event handling and scripting capabilities. This involves capturing all user input (keyboard and mouse) and using a script to manually update the text geometry and appearance to reflect typing, selection, and other actions.<br>
> <br>
> Core Components of the Solution<br>
>       • Input Sensing: The foundation of this system is capturing user input.<br>
>               • Keyboard Input: A <KeySensor> node is used to capture every key pressed by the user. Its keyPress events are sent to a script for processing.<br>
>               • Mouse Input: A <PlaneSensor> or <TouchSensor> is placed over the text area. This sensor tracks the mouse's position when the user clicks and drags, which is essential for determining the start and end points of a text selection.<br>
>       • Scripting (The "Brain"): A central <Script> node, written in JavaScript (ECMAScript), is the core of the editor. This script receives events from the sensors and performs all the logic:<br>
>               • Text Management: The script maintains the full text string in a variable. When a key is pressed (e.g., 'a', 'b', 'Backspace', 'Enter'), the script updates this string accordingly. It then updates the string field of one or more <Text> nodes to display the changes in the 3D scene.<br>
>               • Multi-line Handling: To create multiple rows, the script can either manage multiple <Text>nodes (one per line) or use a single <Text>node. A single node can render multiple lines if its string field is an array of strings (e.g., string='"First line" "Second line"'). The script is responsible for breaking the text into lines when the 'Enter' key is pressed or when text wraps.<br>
>               • Caret/Cursor Management: The script must calculate and display a cursor (often a simple 3D shape like a thin Box or a line). Its position is updated based on typing and mouse clicks.<br>
>       • Selection Simulation: This is one of the most complex parts.<br>
>               • Hit-Point Calculation: When a user clicks, the script uses the coordinates from the <PlaneSensor> to calculate which character in the string was clicked on. This requires knowledge of the font's metrics (character width, line height, etc.).<br>
>               • Visual Highlight: To show the selection, the text cannot simply be highlighted as in HTML. Instead, the script programmatically creates a visual effect. A common method is to place a semi-transparent colored <Box> or IndexedFaceSet behind the selected portion of the text. The script dynamically resizes and repositions this highlight box as the user drags the mouse.<br>
>       • Clipboard Integration (Cut, Copy, Paste): The script must interact with the web browser's clipboard.<br>
>               • Event Trapping: The script listens for specific keyPress events from the <KeySensor>, such as 'Ctrl+C' (copy), 'Ctrl+X' (cut), and 'Ctrl+V' (paste).<br>
>               • Browser API: It uses the browser's navigator.clipboard API to perform the operations.<br>
>                       • Copy: The script takes the currently selected text (which it manages internally) and uses navigator.clipboard.writeText() to place it on the system clipboard.<br>
>                       • Cut: Performs a copy operation and then removes the selected text from its internal string and updates the 3D <Text> node.<br>
>                       • Paste: The script calls navigator.clipboard.readText() to get text from the clipboard and inserts it into its internal string at the cursor's position, then updates the 3D text.<br>
> Summary of the Workflow<br>
>       • User clicks in the 3D text area.<br>
>       • The <PlaneSensor> sends the click location to the script.<br>
>       • The script calculates the character position and places a 3D cursor there.<br>
>       • User types a key.<br>
>       • The <KeySensor> sends the key value to the script.<br>
>       • The script updates its internal text string, moves the cursor, and pushes the new string to the stringfield of the visible <Text> node.<br>
>       • User clicks and drags to select text.<br>
>       • The script calculates the start and end of the selection and continuously updates the size and position of a 3D highlight box behind the text.<br>
>       • User presses 'Ctrl+C'.<br>
>       • The script detects this key combination, gets the selected text, and uses navigator.clipboard.writeText() to copy it.<br>
> In conclusion, creating a fully functional, multi-line editable text area in X3D is a highly complex programming task that requires building an entire application from the ground up using X3D's scripting and event-handling nodes. The example you linked is a powerful demonstration of what can be achieved with this advanced approach.<br>
> <br>
> <br>
> <br>
> On Mon, Jul 28, 2025 at 10:39 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br>
> Now that we have FontLibrary, it seems a lot more likely that we can create documentation and specifications in X3D 4.1 instead of HTML.<br>
> <br>
> So the thought is to take our generated content in the archive, and create a 3D library world out of it,  Maybe call it the X3D 3D library world.<br>
> <br>
> Maybe we can figure out new ways of interacting with specifications and documentation.<br>
> <br>
> The first thing I plan to do is take my textareas in X3DJSONLD 12, and render them in 3D.  Maybe the first task is to create a 3D textarea.<br>
> <br>
> <br>
> See Starcel:<br>
> <a href="https://youtu.be/rJuRTZOE99g" rel="noreferrer" target="_blank">https://youtu.be/rJuRTZOE99g</a><br>
> <br>
> John <br>
> _______________________________________________<br>
> x3d-public mailing list<br>
> <a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
> <a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
<br>
<br>
_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div></div>
</blockquote></div></div>