Summary

Title:Rendering impossible?
Category:Crash/Critical
Status:Open
Posted By:eloison ( Erwann Loison )
Date Created:16 September 2015

Problem

Description:

Hello there,

I'm glad to be part of this beta test.

It seems that there is an impossibility to render at all (I'm using Arion). After some digging and switching to the Scanline renderer, I found out that the problem is that Lucid Modifier does not implement GetRenderMesh. The exact message from max is:

Object <Lucid Modifier> doesn't implement GetRenderMesh- can't render

This is happening on 3ds Max 2016 (btw, I cannot get Lucid to work on Max 2015 which is still my preferred version of Max currently, I'm guessing a problem with the version of Flex/Physx but I've installed the very last Physix plugin for Max from NVIDIA developers area).

Steps to Reproduce:

- setup some simulation

- hit render

What error do you get on Max 2015?

Regarding GetRenderMesh, it is implemented by the object which modifier produces. Modifiers themselves don't have to implement this, instead the renderer should becalling node->EvalWorldState(...).obj and using GetRenderMesh from there. Does the scanline render OK for you?

Marsel Khadiyev (Software Developer, EPHERE Inc.)

I don't get any error, simulation just don't happen like if Flex/Physx was not triggered.

About the GetRenderMesh, that's precisely the scanliner that gives that error. Arion gives no error and once in many many attemps may manage to get a frame to render, but just one. Iray seem to get away with it and render fine.

I've asked the 3ds Max plugin dev here and he's told me GetRenderMesh is mandatory for any renderable geometry. Quote from the Max SDK:

virtual CoreExport Mesh* GetRenderMesh

This method should be implemented by all renderable GeomObjects.

It provides a mesh representation of the object for use by the renderer. 

 

Indeed, however, a modifier is not a renderable object. Instead the object that flows through it is the one that gets rendered. The rendered needs to evaluate a "world state" of an object (EvalWorldState) and then use whatever is in the result as the end of the geometric pipeline and render that. That object for Lucid is indeed a Mesh, which does have a GetRenderMesh function implemented. Hope that makes sense.

Marsel Khadiyev (Software Developer, EPHERE Inc.)

I guess it does but then the scanliner should work straight. See attached snapshot

That is very strange, do you mind sending me the scene?

Marsel Khadiyev (Software Developer, EPHERE Inc.)