Way to obfuscate assets when distributing 3D demo?

I bought some assets on turbosquid and if I package my scene and distribute it, I believe that the 3D models can be extracted in a way that the 3D artist might not agree with (since it would be possible to extract a model that is commercial from the creator via turbosquid).

The actual model was a space station. Is it possible to distribute the .jar and include the 3D models and make sure that it complies or should I contact the original 3D creator who created the 3D model that I bought on turbosquid?

Thanks in advance for any suggestion.

Obfuscation is pointless, here is why.

IP-theory
When you create an original piece of work you automatically become the copyright holder to that work. It is your work and no one may use it for any purpose.

You can give away the copyright to some one else, this is a commmon contract when you are doing work for commission or salary.

You can allow others to use your work. You then give them a license to use your work, it is still your work, you are the copyright holder.

Without looking I am 99,999% sure that you did not buy the copyright to the model. You bought a license to use the model.

Now, either that license a) Allows you to distribute the model in your game or it b) Did not.

If the license does not explicitly specify that you are allowed to distribute the model you are not allowed to do so. No matter how you obfuscate or encrypt it. No matter what you thought you bought, no matter what you think is reasonable. Either you are allowed to distribute or not - as dictated by the license.

Simple as that.

IANAL
To head off any discussions, I am not a lawyer, neither are any reader of this post (probably). There are a lot of discussions about how to interpret ‘original’ and ‘work’. There is the fact that copyright is not a law in many countries (it is a trade agreement). There is so much confusion on the internet about copyright, trademarks, patents - they are all different things. So rather than spamming this thread, please open a new thread if any reader have any thoughts on copyrights or how to interpret copyright in computer games.

Edit: Spelling

Thanks for the info. Looking more closely at the receipt, it says “all extended uses” so I might check what that means.

Qty Product Name / License Product ID Price 1 Large SciFi Space Station Royalty Free - All Extended Uses 717974 $59.00 Order Total: $59.00

Many of the models I’ve purchased have a clause in the license saying:
“In the game, the product must be compiled and protected with resource
encryption, so it exist only within the program code and may not be rebuilt
from the compiled binary.”

…but there is no way to encrypt it, really. If my game can read it then so can anyone else… I can only delay it.

I don’t have any immediate plans to use any of these models in a published game so I haven’t pursued what they consider “encryption” in this case. If I decided to use them, I was going to follow up. “What you ask is impossible but clearly you must have meant something possible… so what are you really asking?”

The best way to “protect” your assets in jME is simply making j3o files and keeping them in the assets.jar

Sure people can access the models if they want to but its way harder using them and modifying them for their own purposes and as we all know we can extract the models from about all existing games using some tools.

I will now convert the spacestation.blend to a .j3o for some protection so that it’s not exactly the same file. I had the idea of loading assets over HTTP and requiring authentication when loading the asset, then it could be done with API keys. And even locally there could be some API key or credential uniqueness if I must protect some local asset from extraction.

I believe that I can just convert the spacestation.blend to spacestation.j3o and load it same way it already is loaded.

[java] Spatial spaceStationSpatial = assetManager
.loadModel(“SpaceStation.blend”);
spaceStationSpatial.setLocalScale(3500f);

	spaceStationSpatial.setLocalScale(3500f);

	BoundingBox sbv = (BoundingBox) spaceStationSpatial.getWorldBound();

	CompoundCollisionShape shape3 = new CompoundCollisionShape();
	shape3.addChildShape(
			new CylinderCollisionShape(new Vector3f(sbv.getXExtent(), sbv
					.getYExtent(), sbv.getZExtent()), 1), new Vector3f(0,
					0, 0));
	RigidBodyControl spaceStationControl = new RigidBodyControl(shape3, 0);
	spaceStationSpatial.addControl(spaceStationControl);
	spaceStationControl.setMass(0f);
	spaceStationControl.setPhysicsLocation(new Vector3f(10000f, -10f,
			705000f));[/java]
@normen said: The best way to "protect" your assets in jME is simply making j3o files and keeping them in the assets.jar

Sure people can access the models if they want to but its way harder using them and modifying them for their own purposes and as we all know we can extract the models from about all existing games using some tools.

Yeah, that protects the models as well as anything they could mean. It doesn’t protect the textures, though.

Requiring it to be downloaded from the website if anything makes it less vulnerable not more vulnerable.

At the end of the day the models are on your computer and being displayed by the graphics card. That means that at some point they must get turned into a list of vertices, textures, etc.

A sufficiently determined hacker as a result can ALWAYS get hold of the model.

However what they usually mean in this case is not to make it too easy to do so. For the most case converting to j3o and embedding inside a JAR will suffice. If not then you need to look in more detail at just what the license is wanting you to do.

If its just to fulfill the contract, a simple XOR with some hardcoded byte might do, no stock tool can open it then.
Using a custom locator that extends one of the existing by wrapping the input stream with a de-xor-stream will do it.