[x3d-public] What or where is pp3.x3d

John Carlson yottzumm at gmail.com
Mon Jul 28 11:00:56 PDT 2025


Here’s a question.  Is whitespace copyrightable, when generated by pretty
printers?   Can I get sued for copying whitespace?

On Mon, Jul 28, 2025 at 12:41 PM John Carlson <yottzumm at gmail.com> wrote:

> That’s a good point, I know one of my files has a large header.  I will
> check the others.
>
> 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.
>
> Do you want me to label the PLY output model?
>
> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/data/pp3.x3d
>
> The above link is all my code.  It’s real.
>
> I also provide examples to the LLM to help with coding.
>
> It’s unclear who owns the output of an LLM generated program?
>
>  can also put comments in the CSS code and the responsive CSS, I didn’t
> write that.
>
> John
>
>
> On Mon, Jul 28, 2025 at 12:01 PM Vincent Marchetti via x3d-public <
> x3d-public at web3d.org> wrote:
>
>> Is pp3.x3d a real file with a accessible URL or is it a phantasm conjured
>> up by a large language model?
>>
>> 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
>>
>> Thank You
>> Vince Marchetti
>>
>>
>> > On Jul 28, 2025, at 12:08 PM, John Carlson via x3d-public <
>> x3d-public at web3d.org> wrote:
>> >
>> > Maybe some could try this prompt generated by AI:  maybe expand it to
>> create a PROTO:
>> >
>> > 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.
>> >
>> > 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.
>> >
>> > Here is a breakdown of how such a system is built, based on the
>> techniques used in advanced examples like the one you referenced.
>> >
>> > The Concept: Building a Text Editor from Scratch in 3D
>> > 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.
>> >
>> > Core Components of the Solution
>> >       • Input Sensing: The foundation of this system is capturing user
>> input.
>> >               • 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.
>> >               • 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.
>> >       • 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:
>> >               • 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.
>> >               • 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.
>> >               • 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.
>> >       • Selection Simulation: This is one of the most complex parts.
>> >               • 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.).
>> >               • 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.
>> >       • Clipboard Integration (Cut, Copy, Paste): The script must
>> interact with the web browser's clipboard.
>> >               • Event Trapping: The script listens for specific
>> keyPress events from the <KeySensor>, such as 'Ctrl+C' (copy), 'Ctrl+X'
>> (cut), and 'Ctrl+V' (paste).
>> >               • Browser API: It uses the browser's navigator.clipboard
>> API to perform the operations.
>> >                       • Copy: The script takes the currently selected
>> text (which it manages internally) and uses navigator.clipboard.writeText()
>> to place it on the system clipboard.
>> >                       • Cut: Performs a copy operation and then removes
>> the selected text from its internal string and updates the 3D <Text> node.
>> >                       • 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.
>> > Summary of the Workflow
>> >       • User clicks in the 3D text area.
>> >       • The <PlaneSensor> sends the click location to the script.
>> >       • The script calculates the character position and places a 3D
>> cursor there.
>> >       • User types a key.
>> >       • The <KeySensor> sends the key value to the script.
>> >       • The script updates its internal text string, moves the cursor,
>> and pushes the new string to the stringfield of the visible <Text> node.
>> >       • User clicks and drags to select text.
>> >       • 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.
>> >       • User presses 'Ctrl+C'.
>> >       • The script detects this key combination, gets the selected
>> text, and uses navigator.clipboard.writeText() to copy it.
>> > 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.
>> >
>> >
>> >
>> > On Mon, Jul 28, 2025 at 10:39 AM John Carlson <yottzumm at gmail.com>
>> wrote:
>> > 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.
>> >
>> > 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.
>> >
>> > Maybe we can figure out new ways of interacting with specifications and
>> documentation.
>> >
>> > 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.
>> >
>> >
>> > See Starcel:
>> > https://youtu.be/rJuRTZOE99g
>> >
>> > John
>> > _______________________________________________
>> > x3d-public mailing list
>> > x3d-public at web3d.org
>> > http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>
>>
>> _______________________________________________
>> x3d-public mailing list
>> x3d-public at web3d.org
>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250728/976e44c0/attachment-0001.html>


More information about the x3d-public mailing list